Oracle® Fusion Middleware Oracle WebCenter Portal開発者ガイド

11g リリース1 (11.1.1.7.0)

B72084-02(原本部品番号:E10148-20)

目次

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

はじめに

- 対象読者

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

- 関連ドキュメント

- 表記規則

新機能

- リリース11.1.1.7.0の新機能および拡張機能

第I部 概要

1 開発者向けクイック・スタート・ガイド

- 1.1 WebCenter Portal開発者向けFAQ

- 1.2 必要なソフトウェアのインストール

- 1.3 チーム開発の準備

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

- 1.5 反復開発の準備

- 1.5.1 反復開発とは

- 1.5.2 反復開発のしくみ

- 1.5.3 反復開発の有効化

- 1.5.4 反復開発の無効化

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

- 1.6.1 接続の場所について

- 1.6.2 接続ウィザードにアクセスする方法

- 1.6.3 接続の詳細の参照先

- 1.7 ポータルのレイアウトの計画

- 1.8 スキンの使用に関する項

- 1.9 ラウンドトリップ開発の準備

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

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

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

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

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

- 1.11 データベース・スキーマのインストール

2 Oracle WebCenter Portalの理解

- 2.1 Oracle WebCenter Portalとは

- 2.2 WebCenter Portal: Frameworkの概要

- 2.3 WebCenter Portal: Frameworkの主な機能

- 2.3.1 リモートのアプリケーションおよびサービスにアクセスするためのポートレットとページレット

- 2.3.1.1 ポートレットとは

- 2.3.1.2 ページレットとは

- 2.3.1.3 ポートレットとタスク・フローの相違点

- 2.3.2 ユーザー・カスタマイズが可能なOracle WebCenter Portalのコンポーザ

- 2.3.3 サポート対象コンテンツ・リポジトリによるコンテンツの統合

- 2.3.4 検索フレームワーク

- 2.3.5 開発エクスペリエンスの編成を支援するリソース・カタログ

- 2.3.6 アプリケーションのセキュリティ

- 2.4 Oracle WebCenter Portal: Servicesの概要

- 2.4.1 WebCenter Portal: ServicesおよびREST API

- 2.5 Oracle Application Development Framework (Oracle ADF)の概要

- 2.5.1 Oracle ADFとは

- 2.5.2 WebCenter Portal開発者にとってOracle ADFが重要な理由

- 2.5.3 Oracle ADFテクノロジの内容

- 2.6 Oracle JDeveloperおよびWebCenter Portal拡張機能の概要

- 2.7 アプリケーション・ライフ・サイクルの理解

- 2.8 開始前に考慮する必要のある設計上の問題

- 2.8.1 ユーザーに関する考慮事項

- 2.8.2 サイト管理者に関する考慮事項

- 2.8.3 開発者に関する考慮事項

- 2.9 WebCenterアクセシビリティ機能の概要

- 2.9.1 アクセス可能なHTMLの生成

- 2.9.2 実行時のアクセシビリティ機能

- 2.9.3 ポートレットのアクセシビリティの考慮事項

3 開発環境の準備

- 3.1 Oracle JDeveloperのインストール

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

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

- 3.4 統合WebLogic Serverの使用

- 3.4.1 統合WLSの起動方法と停止方法

- 3.4.2 統合WLSに関する必知事項

- 3.4.3 WebCenter事前構成サーバーのReadmeファイル

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

- 3.4.4.1 OmniPortletおよびWebクリッピング

- 3.4.4.2 WSRPのサンプル・ポートレット・プロデューサおよびポートレット

- 3.4.4.3 PDK-Javaのサンプル・ポートレット・プロデューサおよびポートレット

- 3.5 データベース・スキーマのインストール

- 3.5.1 RCUを使用したスキーマのインストール

- 3.5.2 SQLスクリプトを使用したWebCenter Portalのスキーマのインストール

- 3.6 SharePoint用Oracle WebCenterアダプタのインストール

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

- 4.1 Frameworkアプリケーションのソース・コントロールの有効化

- 4.1.1 Subversionリポジトリの作成

- 4.1.2 Oracleチーム・プロダクティビティ・センターの理解

- 4.2 開発者が関与するFrameworkアプリケーションのファイルの理解

- 4.2.1 共通のオブジェクトに関連付けられたファイル

- 4.2.2 メタデータ・ファイルに影響を与える開発者アクション

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

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

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

- 4.4.2 ポートレット・プロデューサ名のクラッシュ

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

5 Frameworkおよびポートレット・プロデューサ・アプリケーションの作成

- 5.1 アプリケーション・テンプレートとは

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

- 5.2.1 Frameworkアプリケーションの作成方法

- 5.3 ポータルへのページの追加

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

- 5.4.1 概要

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

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

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

- 5.4.4.1 ベースURLプリファレンスの定義

- 5.4.4.2 URLの動的なマッピング

- 5.5 ポートレット・プロデューサ・アプリケーションの作成

- 5.5.1 テンプレートを使用したポートレット・アプリケーションの作成方法

- 5.5.2 ポートレット・プロデューサ・アプリケーション・テンプレートを使用する場合の処理

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

6 拡張構成オプション

- 6.1 テクノロジ・スコープによるFrameworkアプリケーションの手動構成

- 6.1.1 テクノロジ・スコープとは

- 6.1.2 テクノロジ・スコープの追加と削除

- 6.1.3 Frameworkアプリケーションのデフォルトのテクノロジ・スコープ

- 6.1.4 WebCenter Portal: Frameworkアプリケーション固有のテクノロジ・スコープ

- 6.1.5 Oracle WebCenter Portal: Frameworkテクノロジ・スコープを後から追加してWebCenter Portal: Frameworkアプリケーションを作成する場合

- 6.1.6 WebCenter PS2以前のアプリケーションのWebCenter Portal: Frameworkアプリケーションへの移行

- 6.2 WebCenter機能を組み込むためのWebCenter Portal: Framework以外のアプリケーションの拡張

- 6.3 WARファイルのインポートによるプロジェクトの作成

7 WebCenter Portal Services用アプリケーションの準備

- 7.1 WebCenter Portalサービスのテクノロジの理解

- 7.1.1 WebCenter Portalの同格サービスの理解

- 7.1.2 WebCenter PortalのAPIの理解

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

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

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

- 7.2.1.1 サービスのセキュリティの実装

- 7.2.1.2 サービスのSSLで保護された接続の設定

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

- 7.2.2.1 既存のデータベース接続の関連付け

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

- 7.3 カスタム・コンポーネントによるFrameworkアプリケーションの拡張

- 7.3.1 リソース・アクション処理フレームワークの概要

- 7.3.2 リソース・ビューアの登録

- 7.3.3 リソース認可プロバイダ・クラスの作成

- 7.3.4 ビュー・ハンドラおよびナビゲーションの動作の指定

- 7.4 サービスの一般設定の構成

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

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

第II部 ポータル構造の設定

8 Frameworkアプリケーションの理解

- 8.1 Frameworkアプリケーションについて

- 8.2 Oracle WebCenter Portal: Frameworkについて

- 8.2.1 Oracle WebCenter Portal: Frameworkをプロジェクトに追加する方法

- 8.2.2 Oracle WebCenter Portal: Frameworkが提供する機能について

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

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

- 8.5 WebCenter Portal: Frameworkアプリケーションの機能の理解

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

- 8.5.2 ポータル・ページの保護

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

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

- 8.5.5 その他の設計時フォルダ

- 8.5.6 さらに高度な開発ユース・ケースのヒント

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

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

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

- 8.7.2 設計時におけるデフォルト・プリファレンスの変更方法

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

- 8.9 「アプリケーション・ソース」フォルダについて

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

- 8.11 実行時のWebCenter Portal

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

- 8.11.2 実行時WebCenter Portal管理コンソール

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

- 8.11.4 ポータル・リソースの実行時の編集

- 8.12 WebCenter Portalファイルの編成方法

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

- 8.12.1.1 WebCenter Portal: Frameworkアプリケーションの編成方法

- 8.12.1.2 WebCenter Portal: Frameworkアプリケーションがこのように編成される理由

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

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

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

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

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

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

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

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

9 WebCenter Portalのライフ・サイクルの理解

- 9.1 WebCenter Portalのライフ・サイクルについて

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

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

- 9.2.2 開発環境のタスク

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

- 9.2.4 テスト環境のタスク

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

- 9.2.6 本番環境のタスク

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

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

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

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

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

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

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

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

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

- 9.9 WebCenter Portal: Frameworkアプリケーションの既存環境への移動

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

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

- 9.11.1 概要

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

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

- 9.12 WebCenter Portalのパーソナライズのファイルの構築とデプロイ

- 9.12.1 WCPS MARファイルの構築

- 9.12.2 WCPSファイルのサーバーへのデプロイ

- 9.12.3 WCPSファイルのアーカイブ・ファイルへのデプロイ

- 9.12.4 MARファイルのインポートとエクスポート

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

- 9.13.1 伝播ツールの概要

- 9.13.2 伝播ツールの構成

- 9.13.2.1 Oracle Enterprise Manager Fusion Middleware ControlコンソールによるURL接続の構成

- 9.13.2.2 WLSTによるURL接続の構成

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

- 9.13.4 WCPSファイルの伝播

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

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

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

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

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

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

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

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

10 ポータル用のナビゲーション・モデルの構築

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

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

- 10.3 ナビゲーション・モデルへのリソースの追加

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

- 10.3.2 コンテンツ・アイテムをナビゲーション・モデルに追加する方法

- 10.3.3 問合せ結果に基づいたコンテンツをナビゲーション・モデルに追加する方法

- 10.3.4 ページ、ポートレット、タスク・フロー、外部アプリケーションまたはWebページをナビゲーション・モデルに追加する方法

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

- 10.3.6 別のナビゲーション・モデルをナビゲーション・モデル内に埋め込む方法

- 10.3.7 ナビゲーション・モデル・データを拡張する方法

- 10.3.7.1 リンクをカスタム・リソースに追加する方法

- 10.3.7.2 コンポーネントをナビゲーション・モデルに追加する方法

- 10.3.7.3 カスタム・フォルダをナビゲーション・モデルに追加する方法

- 10.3.7.4 カスタム・コンテンツ・プロバイダをナビゲーション・モデルに追加する方法

- 10.3.8 ナビゲーション・モデルでリソースを編成する方法

- 10.3.9 リソースの表示オプションの設定方法

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

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

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

- 10.7 ナビゲーション・モデルの実行時管理の有効化

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

- 10.7.2 デプロイしたナビゲーション・モデルのさらなる開発を有効にする方法

- 10.7.2.1 ナビゲーション・モデルのインポート

- 10.7.2.2 ナビゲーション・モデルのエクスポート

- 10.8 WebCenter Portal: Spacesのナビゲーション・モデルの使用

11 ポータルのルック・アンド・フィールの設計

- 11.1 ページ・テンプレートおよびページ・スタイルの概要

- 11.1.1 ページ・テンプレート

- 11.1.2 ページ・スタイル

- 11.1.3 マッシュアップ・スタイル

- 11.1.4 コンテンツ・プレゼンタ表示テンプレート

- 11.2 ページ・テンプレートの使用

- 11.2.1 WebCenter Portalアプリケーション・シード済ページ・テンプレートの概要

- 11.2.2 ページ・テンプレートを作成する方法

- 11.2.3 WebCenter Portalアプリケーションのページ・テンプレート作成に関する必要な知識

- 11.2.4 ページ・テンプレートの実行時切替えの有効化

- 11.2.5 ページ・テンプレートを編集する方法

- 11.2.6 ページ・テンプレートを削除する方法

- 11.2.7 ページ・テンプレートの実行時管理を有効にする方法

- 11.2.8 デプロイしたページ・テンプレートのさらなる開発を有効にする方法

- 11.2.8.1 ページ・テンプレートのインポート

- 11.2.8.2 ページ・テンプレートのエクスポート

- 11.2.9 WebCenter Portal: Spacesのページ・テンプレートを作成および管理する方法

- 11.3 ページ・スタイルの使用

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

- 11.3.2 ページ・スタイルの実行時管理を有効にする方法

- 11.3.3 デプロイしたページ・スタイルのさらなる開発を有効にする方法

- 11.3.3.1 ページ・スタイルのインポート

- 11.3.3.2 ページ・スタイルのエクスポート

- 11.3.4 Spacesのページ・スタイルを作成および管理する方法

- 11.4 マッシュアップ・スタイルの使用

- 11.4.1 マッシュアップ・スタイルを作成する方法

- 11.4.2 マッシュアップ・スタイルの実行時管理を有効にする方法

- 11.4.3 デプロイ済アプリケーションでのマッシュアップ・スタイルのさらなる開発を有効にする方法

- 11.4.3.1 マッシュアップ・スタイルのインポート

- 11.4.3.2 マッシュアップ・スタイルのエクスポート

- 11.4.4 Spacesのマッシュアップ・スタイルを作成および管理する方法

12 ポータルへのリソースの追加

- 12.1 ポータルへのページの追加

- 12.2 ポータルへのサービス・タスク・フローの追加

- 12.3 ポータルへのカスタム・タスク・フローの追加

- 12.4 Content Serverからのコンテンツのポータルへの追加

- 12.5 ポータルへのポートレットの追加

- 12.6 ポータルへのページレットの追加

- 12.7 ポータルへの外部アプリケーションの追加

- 12.8 ポータルへのデータ・コントロールの追加

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

- 13.1 ナビゲーションの視覚化の概要

- 13.2 組込みナビゲーション・タスク・フローのページ・テンプレートへの追加

- 13.2.1 ナビゲーション・タスク・フローをページ・テンプレートに追加する方法

- 13.2.2 ナビゲーション・タスク・フローのパラメータ

- 13.2.3 ナビゲーション・タスク・フローのスタイル・クラスに関する必知事項

- 13.3 ナビゲーションのページ・テンプレートへのプログラムによる追加

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

- 13.3.1.1 ナビゲーション・コンテキストの概要

- 13.3.1.2 ナビゲーション実行時モデルの概要

- 13.3.1.3 ナビゲーション・リソースの概要

- 13.3.1.4 ナビゲーション・モデルをリンクのリストとしてレンダリングする方法

- 13.3.1.5 ナビゲーション・モデルをツリーとしてレンダリングする方法

- 13.3.1.6 ナビゲーション・モデルを3レベルのメニューとしてレンダリングする方法

- 13.3.1.7 ナビゲーション・モデルをブレッドクラムとしてレンダリングする方法

- 13.3.1.8 マスター/ディテール・ナビゲーションのレンダリング方法

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

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

14 スキンの作成および管理

- 14.1 スキンの概要

- 14.2 JDeveloperでのスキンの作成

- 14.2.1 スキン作成に関する必要な知識

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

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

- 14.3 portal-skin.cssの編集

- 14.3.1 portal-skin.cssに関する必要な知識

- 14.3.2 portal-skin.cssの編集方法

- 14.4 スキンの実行時管理の有効化

- 14.4.1 スキンの実行時管理の有効化に関する必要な知識

- 14.4.2 スキンの実行時管理を有効にする方法

- 14.4.3 デプロイしたスキンのさらなる開発を有効にする方法

- 14.4.3.1 スキンのインポート

- 14.4.3.2 スキンのエクスポート

- 14.4.4 JDeveloperでのスキンの作成および実行時における有効化

- 14.4.5 実行時にスキンを作成および管理する方法

- 14.5 スキンのWebCenter Portal: Frameworkアプリケーションへの適用

- 14.5.1 設計時におけるスキンの適用

- 14.5.2 実行時におけるスキンの適用

- 14.6 Spacesのスキンを作成および管理する方法

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

- 14.7.1 スキン共有について

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

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

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

- 14.10 スキン関連のファイル

- 14.10.1 adf-config.xml

- 14.10.2 trinidad-config.xml

- 14.10.3 trinidad-skins.xml

15 リソース・カタログの作成と管理

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

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

- 15.2.1 カスタム・リソース・カタログの作成方法

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

- 15.2.3 リソース・カタログのコンテンツの管理方法

- 15.2.3.1 フォルダの追加

- 15.2.3.2 リンクの追加

- 15.2.3.3 リソース・カタログの追加

- 15.2.3.4 コンポーネントの追加

- 15.2.3.5 カスタム・フォルダの追加

- 15.2.3.6 カスタム・コンテンツ・プロバイダの追加

- 15.2.3.7 リソースのカタログへのドラッグ・アンド・ドロップ

- 15.2.3.8 リソースの編集

- 15.2.3.9 リソースの削除

- 15.2.3.10 カタログ内のリソースの再配置

- 15.2.4 設計時に作成されたデータ・コントロールの公開方法

- 15.2.5 実行時に作成されたデータ・コントロールの公開方法

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

- 15.2.7 アプリケーションまたはページ用のデフォルト・リソース・カタログの構成方法

- 15.2.8 リソース・カタログの定義時の必知事項

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

- 15.3 リソース・カタログの管理および実行時管理の有効化

- 15.3.1 リソース・マネージャのエントリの管理

- 15.3.2 デプロイしたリソース・カタログのさらなる開発の有効化

- 15.3.2.1 リソース・カタログのエクスポート

- 15.3.2.2 リソース・カタログのインポート

- 15.3.3 Spacesリソース・カタログでの作業

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

- 15.4.1 リソースレベル・フィルタリング

- 15.4.2 カタログレベル・フィルタリング

- 15.5 複数のリソース・カタログの構成

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

- 15.5.2 実行時の処理

- 15.6 リソース・カタログでの問題のトラブルシューティング

16 リソース・マネージャの追加および使用

- 16.1 実行時リソース管理の概要

- 16.2 JDeveloperでのポータル・リソースの使用

- 16.2.1 リソースをリソース・マネージャに追加する方法

- 16.2.2 コンテンツ・ディレクトリに関する必知事項

- 16.2.3 ポータル・リソースのプロパティを更新する方法

- 16.2.4 リソースをリソース・マネージャから削除する方法

- 16.3 ポータルの実行時管理の有効化

- 16.3.1 リソース・マネージャ・タスク・フローを追加する方法

- 16.3.2 リソース・マネージャを実行時に使用する方法

- 16.3.2.1 リソース・マネージャへのアクセス

- 16.3.2.2 リソースの作成

- 16.3.2.3 リソースのアップロードとダウンロード

- 16.3.2.4 リソースの編集

- 16.3.2.5 リソースのコピー

- 16.3.2.6 リソースのセキュリティの設定

- 16.3.2.7 リソースの削除

- 16.3.2.8 リソースの表示または非表示

- 16.3.2.9 リソースのソース・コードの編集

- 16.3.2.10 リソースのプロパティの設定

- 16.3.2.11 リソースのプレビュー

- 16.4 リソースのラウンドトリップ開発の有効化

- 16.4.1 リソース・マネージャを使用してリソースをダウンロードする方法

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

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

- 16.4.4 リソース・マネージャを使用してリソースをアップロードする方法

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

17 コンポーザの概要

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

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

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

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

- 17.3.2 レイアウトの変更

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

- 17.4 ページ編集モードの「デザイン」ビューでの編集機能

- 17.4.1 コンテンツの追加

- 17.4.1.1 タブ・セットまたはタブのBoxコンポーネントへの追加

- 17.4.1.2 既存のコンポーネントに隣接するBoxコンポーネントの追加

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

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

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

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

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

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

- 17.4.8 レイアウトの変更

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

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

- 17.4.11 ページのリセット

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

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

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

- 17.5 ページ編集モードの「ソース」ビューでの編集機能

- 17.5.1 切取りオプションおよび貼付けオプションを使用したページ・コンテンツの再配置

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

- 17.5.2.1 タスク・フローのリセット

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

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

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

- 17.6.1 Page Customizable

- 17.6.2 Change Mode LinkおよびChange Mode Button

- 17.6.3 Panel Customizable

- 17.6.4 Show Detail Frame

- 17.6.5 Layout Customizable

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

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

- 17.7.1.1 タスク・フローのセキュリティ

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

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

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

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

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

- 18.2.1 ページの作成方法

- 18.2.1.1 ページ - 新規作成タスク・フローの追加方法

- 18.2.1.2 ページ・サービスのセキュリティの設定

- 18.2.1.3 実行時のページの作成方法

- 18.2.1.4 実行時に作成したページの構造

- 18.2.1.5 実行時に作成したページにアクセスする方法

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

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

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

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

- 18.3.4 スタイルの指定

- 18.3.4.1 デフォルトのスタイル

- 18.3.4.2 カスタムのスタイル

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

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

- 18.3.7 イメージの表示

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

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

- 18.5 管理ページ

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

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

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

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

- 18.6.1.1 ページまたはページ・フラグメントのスタイルを作成する方法

- 18.6.1.2 「ページの作成」ダイアログのスタイルの編集方法

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

- 18.6.2.1 タスク・フローのパラメータを使用してADFテンプレート名を指定する方法

- 18.6.2.2 APIパラメータを使用してADFテンプレート名を指定する方法

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

- 18.6.3.1 「ページの作成」ダイアログのスタイルを作成する方法

- 18.6.3.2 新しいスタイルをページ - 新規作成タスク・フローから参照する方法

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

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

- 18.7.1.1 ADF Facesコンポーネントを使用したページのタブとしてのレンダリング

- 18.7.1.2 ADF Facesコンポーネントを使用したページのリンクとしてのレンダリング

- 18.7.1.3 ADF Facesコンポーネントを使用したページのイメージ・リンクとしてのレンダリング

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

- 18.8 ページ・サービスの詳細情報

- 18.8.1 ページ・サービスJava APIの使用方法

- 18.8.1.1 ページ・サービスAPIを使用するために必要な構成設定

- 18.8.1.2 ページ・サービスAPIの概要

- 18.8.1.3 ページ・サービスAPIを使用するようにアプリケーションを設定する方法

- 18.8.1.4 例: ページを作成する方法

- 18.8.2 ページ・サービス・データ・コントロールの使用方法

- 18.8.2.1 ページ・サービス・データ・コントロールを追加する方法

- 18.8.2.2 実行時にページを表示、編集および削除する方法

- 18.9 ページ・サービスのサンプル

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

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

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

- 19.1.2 Page Customizableを使用した実行時カスタマイズの有効化方法

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

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

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

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

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

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

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

- 19.1.10 実行時の処理

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

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

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

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

- 19.3.1.1 タスク・フローの追加に関する考慮事項

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

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

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

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

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

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

- 20.1.4 ドロップ・ハンドラ

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

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

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

- 20.1.8 構成ファイル

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

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

- 20.2.1.1 アドオン・タスク・フローの作成

- 20.2.1.2 コンポーザを使用したアドオンの登録

- 20.2.1.3 アドオンのadf-config.xmlへの登録

- 20.2.2 実行時の処理

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

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

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

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

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

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

- 20.3.1.2 コンポーネントに対するカスタム・プロパティ・パネルの登録

- 20.3.1.3 タスク・フローに対するカスタム・プロパティ・パネルの登録

- 20.3.2 実行時の処理

- 20.3.3 デフォルトのプロパティ・パネルの上書き方法

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

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

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

- 20.4 式ビルダーの拡張

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

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

- 20.4.3 実行時の処理

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

- 20.5.1 LOVの構成方法

- 20.5.1.1 静的LOVの構成

- 20.5.1.2 動的LOVの構成

- 20.5.1.3 ピッカーの構成

- 20.5.1.4 グローバル・リストからのLOVの構成

- 20.5.2 実行時の処理

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

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

- 20.6.1.1 イベント・ハンドラの登録をサポートするUIイベント

- 20.6.1.2 保存イベント・ハンドラの作成: 例

- 20.6.1.3 コンポーザを使用したイベント・ハンドラの登録

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

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

- 20.6.3.1 イベント・ハンドラの順序番号の指定

- 20.6.3.2 イベント処理の終了

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

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

- 20.7.1.1 ドロップ・ハンドラの作成

- 20.7.1.2 コンポーザを使用したドロップ・ハンドラの登録

- 20.7.1.3 XMLコンポーネントのリソース・カタログへの追加

- 20.7.2 実行時の処理

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

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

- 20.8.2 実行時の処理

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

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

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

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

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

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

- 20.10.2 実行時の処理

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

- 20.10.4 ツールバーのセクションを上書きしてカスタム・コンテンツを表示する方法

- 20.11 「デザイン」ビューでの直接選択の有効化

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

- 20.11.2 実行時の処理

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

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

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

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

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

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

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

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

- 21.2.5 実行時の処理

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

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

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

- 21.3.2.1 インスタンス・レベルでのカスタム・アクションの定義

- 21.3.2.2 グローバル・レベルでのカスタム・アクションの定義

- 21.3.2.3 別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示するカスタム・アクションの構成

- 21.3.3 実行時の処理

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

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

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

- 21.4.1.1 カスタム・アクションのロジックの定義

- 21.4.1.2 カスタム・アクションを含むJSPXページの作成

- 21.4.1.3 タスク・フローを含むアプリケーション・ページからのJSPXページのコール

- 21.4.2 実行時の処理

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

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

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

- 21.5.3 実行時の処理

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

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

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

- 21.7.2 実行時の処理

- 21.8 アプリケーションの「ソース」ビュー・メニューの無効化

- 21.8.1 「ソース」ビューを無効にする方法

- 21.8.2 実行時の処理

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

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

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

- 21.11.1 デフォルトの変更マネージャ構成の概要

- 21.11.2 既存の11.1.1.1のアプリケーションでのComposerChangeManagerの構成方法

- 21.11.2.1 web.xmlファイルのCHANGE_PERSISTENCEコンテキスト・パラメータの更新

- 21.11.2.2 adf-config.xmlファイルへの関連エントリの追加

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

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

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

- 21.12.3 上書きバンドルの構成方法

- 21.12.4 実行時の処理

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

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

- 22.1 MDSの概要

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

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

- 22.2.1.1 アプリケーションのadf-config.xmlファイルの更新

- 22.2.1.2 アプリケーションのweb.xmlファイルの更新

- 22.2.1.3 アプリケーションのデータベース・ストアの選択

- 22.2.1.4 実行時のフル・ページ・リフレッシュの有効化

- 22.2.2 実行時の処理

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

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

- 22.2.5 アプリケーションのサンドボックスの作成を有効にする方法

- 22.2.6 アプリケーションのサンドボックスの作成を有効にした場合の処理

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

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

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

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

- 22.3.4 ComposerSessionOptionsFactoryクラスの実装方法

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

- 22.3.6 WebCenterComposerFilterの構成方法

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

- 22.3.7.1 AppNavigationUtilsクラスの作成方法

- 22.3.7.2 AppCloseHandlerの作成方法

- 22.3.7.3 AppCloseHandlerの登録方法

- 22.3.7.4 AppModeBeanの作成方法

- 22.3.8 実行時の処理

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

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

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

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

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

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

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

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

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

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

- 23.2.5 WebCenterComposerFilterの構成方法

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

- 23.2.7 実行時の処理

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

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

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

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

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

- 23.4.2 実行時の処理

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

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

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

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

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

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

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

- 23.7 コンポーザのデフォルト・セキュリティ・ポリシーの上書き

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

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

- 23.7.3 実行時の処理

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

24 タスク・フローのカスタマイズ

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

- 24.1.1 WebCenter Portal: Spaces: 新規タスク・フロー・カスタマイズ・アプリケーションの作成

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

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

- 24.3 Oracle WebCenter Portalのタスク・フローのカスタマイズ

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

- 24.3.1.1 例: ワークリスト・タスク・フローのカスタマイズ

- 24.3.1.2 例: ディスカッション・フォーラム・タスク・フローのカスタマイズ

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

- 24.3.2.1 例: ドキュメント・ライブラリ - リスト・ビュー・タスク・フローのカスタマイズ

- 24.4 デプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用

- 24.4.1 カスタムWebCenter Portalアプリケーションのためのメタデータ・デプロイメント・プロファイルの作成

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

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

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

- 24.6 WebCenter Portalタスク・フローのカタログ

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

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

26 コンテンツ・リポジトリ接続の管理

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

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

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

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

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

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

- 26.2.3.2 Microsoft SharePointコンテンツおよびサービスのマッピング

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

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

- 26.2.6 リポジトリ接続の作成時の必知事項

- 26.2.6.1 アイデンティティ伝播および外部アプリケーションの認証方式の使用に関する必要な知識

- 26.2.6.2 Oracle Portalに関する必要な知識

- 26.2.6.3 SharePoint用Oracle WebCenterアダプタに関する必要な知識

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

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

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

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

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

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

- 27.1.1 getItemsメソッド

- 27.1.2 searchメソッド

- 27.1.3 advancedSearchメソッド

- 27.1.4 getURIメソッド

- 27.1.5 getAttributesメソッド

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

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

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

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

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

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

- 27.5.1 リンクとしてコンテンツを公開する方法

- 27.5.1.1 テキスト・リンクとしてのコンテンツの公開

- 27.5.1.2 ドキュメントへリンクするクリック可能イメージの作成

- 27.5.2 実行時の処理

- 27.5.3 表にコンテンツを公開する方法

- 27.5.3.1 読取り専用形式でのファイルおよびフォルダの表示

- 27.5.3.2 実行リンクとしてのName属性の表示

- 27.5.3.3 ファイルのみが表示される表の構成

- 27.5.4 実行時の処理

- 27.5.5 ツリーにフォルダ・コンテンツを公開する方法

- 27.5.5.1 読取り専用形式でのファイルおよびフォルダの表示

- 27.5.5.2 ハイパーリンクとしてのファイル名の表示

- 27.5.6 実行時の処理

- 27.5.7 コンテンツ・リポジトリに検索機能を追加する方法

- 27.5.7.1 標準検索機能の追加

- 27.5.7.2 拡張検索機能の追加

- 27.5.8 実行時の処理

- 27.5.9 検索機能の使用時の必知事項

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

- 28.1 アプリケーションへのコンテンツ・プレゼンタの追加

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

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

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

- 28.4.1 概要

- 28.4.2 単一アイテムの表示テンプレートの定義

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

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

- 28.4.4.1 コンテンツ・アイテムの基本情報の取得

- 28.4.4.2 コンテンツ・アイテムのプロパティおよび値の操作

- 28.4.4.3 コンテンツ・アイテムのアイコンおよびURLの操作

- 28.4.4.4 グループ・スペース情報の操作

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

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

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

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

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

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

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

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

- 28.6 実行時の処理

- 28.6.1 実行時の概要

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

- 28.7 コンテンツ・プレゼンタ表示テンプレートのパフォーマンスの考慮点

29 ドキュメント・サービスの統合

- 29.1 ドキュメント・サービスの概要

- 29.2 接続の設定

- 29.3 ドキュメント・サービスのセキュリティの設定

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

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

- 29.6 ドキュメント・サービスによるアダプタの使用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

31 Wikiとブログの統合

- 31.1 Wikiとブログの概要

- 31.2 Wikiとブログの要件

- 31.3 Wikiの統合

- 31.3.1 ドキュメント・エクスプローラ・タスク・フローに関する必要な知識

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

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

- 31.3.4 実行時の処理

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

- 31.4 ブログの統合

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

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

- 31.4.2.1 既存のフォルダを使用したデフォルト・ブログの追加

- 31.4.2.2 ブログ・タスク・フローを使用したページへのカスタム・ブログの追加

- 31.4.3 実行時の処理

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

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

- 31.4.5.1 ブログ・アーカイブ・タスク・フローのパラメータ

- 31.4.5.2 ブログ・バナー・タスク・フローのパラメータ

- 31.4.5.3 ブログ・ダイジェスト・タスク・フローのパラメータ

- 31.4.5.4 最近のブログ投稿タスク・フローのパラメータ

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

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

32 お知らせサービスの統合

- 32.1 お知らせの概要

- 32.1.1 お知らせサービスの理解

- 32.1.2 お知らせの要件

- 32.1.3 実行時の処理

- 32.2 お知らせサービスの基本構成

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

- 32.2.1.1 お知らせの接続

- 32.2.1.2 お知らせ用の接続の設定方法

- 32.2.2 お知らせサービスの設計時の追加

- 32.2.2.1 お知らせサービス・タスク・フロー

- 32.2.2.2 ページへのお知らせの追加方法

- 32.2.2.3 お知らせサービス・タスク・フローのパラメータを変更する方法

- 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.1.1 ディスカッション接続

- 33.2.1.2 ディスカッション用の接続の設定方法

- 33.2.2 ディスカッション・サービスの設計時の追加

- 33.2.2.1 ディスカッション・タスク・フロー

- 33.2.2.2 ページへのディスカッションの追加方法

- 33.2.2.3 ディスカッション・サービス・タスク・フローのパラメータを変更する方法

- 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.8.1 ディスカッション・エントリ・ポイント

- 33.3.8.2 ディスカッション・リソース・タイプの分類

- 33.3.8.3 セキュリティ上の考慮事項

- 33.3.8.4 ディスカッション・リソース・タイプ

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

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

- 34.1 IMPサービスの概要

- 34.1.1 IMPサービスの理解

- 34.1.2 IMPの要件

- 34.2 IMPサービスの基本構成

- 34.2.1 IMPサービスの接続の設定

- 34.2.1.1 IMPサービスの接続

- 34.2.1.2 IMPサービス用のMicrosoft LCS接続を設定する方法

- 34.2.1.3 IMPサービス用のMicrosoft OCSおよびMicrosoft Lync接続を設定する方法

- 34.2.2 IMPサービスの設計時の追加

- 34.2.2.1 IMPサービス・タスク・フロー

- 34.2.2.2 IMPサービスをアプリケーションに追加する方法

- 34.2.3 IMPサービスのセキュリティの設定

- 34.3 IMPサービスの詳細情報

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

- 34.3.1.1 Yahoo!メッセンジャー・プレゼンスの設定

- 34.3.1.2 その他のネットワーク・プレゼンス・プロバイダの設定

- 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.3.1 メール・サービス・タスク・フロー

- 35.2.3.2 メール・サービスをアプリケーションに追加する方法

- 35.2.3.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.2.1 投票タスク・フロー

- 36.2.2.2 クイック投票タスク・フローをページに追加する方法

- 36.2.2.3 投票サービス・タスク・フローのパラメータを変更する方法

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

- 36.3 投票サービスの詳細情報

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

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

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

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

- 36.3.4.1 投票の実施データ・コントロール

- 36.3.4.2 投票マネージャ・データ・コントロール

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

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

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

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

- 37.1.1.1 アクティビティ・ストリーム

- 37.1.1.2 コネクション

- 37.1.1.3 フィードバック

- 37.1.1.4 メッセージ・ボード

- 37.1.1.5 プロファイル

- 37.1.1.6 パブリッシャ・タスク・フロー

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

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

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

- 38.1 ピープル・コネクション・サービスのためのデータベース接続を設定する方法

- 38.2 ピープル・コネクション・タスク・フローをページに追加する方法

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

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

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

- 38.4.1.1 settings-insert.sqlの準備と実行

- 38.4.1.2 settings-update.sqlの準備と実行

- 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.3 例: 招待を自動的に受け入れるためのコネクションの構成

39 ピープル・コネクション・タスク・フロー・パラメータ

- 39.1 ピープル・コネクション・タスク・フロー・バインディング・パラメータを改訂する方法

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

- 39.3 アクティビティ・ストリームの詳細な問合せオプションに関する必要な知識

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

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

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

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

- 40.1.2.1 connectionLists

- 40.1.2.2 groupedPeopleCounts

- 40.1.2.3 receivedInvitations

- 40.1.2.4 sentInvitations

- 40.1.2.5 acceptInvitation(String invitationId)

- 40.1.2.6 addConnectionsToList(List userids, String listName)

- 40.1.2.7 createConnectionList(String listName)

- 40.1.2.8 declineInvitation(String invitationId)

- 40.1.2.9 dropConnectionList(String listName)

- 40.1.2.10 getConnectionList(String connectionListName)

- 40.1.2.11 getConnections(String userid, String connectionListName, String filterPattern, String sortBy, int startIndex, int fetchSize)

- 40.1.2.12 getNumberOfConnections(String userid, String connectionListName, String filterPattern)

- 40.1.2.13 ignoreInvitation(String invitationId)

- 40.1.2.14 inviteUserForConnection(String userid, String invitationMessage, Collection connectionListNames)

- 40.1.2.15 isConnectionListModifiable(String listName)

- 40.1.2.16 isConnectionPartOfUnmodifiableList(String connecteeGuid)

- 40.1.2.17 removeConnection(String userid, boolean fromListOnly, String listName)

- 40.1.2.18 searchUsers(String filterPattern, int startIndex, int fetchSize)

- 40.1.2.19 updateConnectionListsMembership(String member, Collection addListIds, Collection removeListIds)

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

- 40.1.3.1 メソッド: getProfile(String userId)

- 40.1.3.2 メソッド: getProfileForUpdate(String userId)

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

41 ピープル・コネクション・サービスREST API

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

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

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

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

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

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

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

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

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

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

- 41.3 フィードバックREST API

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

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

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

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

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

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

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

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

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

- 41.5 招待の作成

- 41.5.1 招待の作成

- 41.5.2 招待の削除

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

42 リンク・サービスの統合

- 42.1 リンク・サービスの概要

- 42.1.1 リンク・サービスの理解

- 42.1.2 リンク・サービスの要件

- 42.1.3 実行時の処理

- 42.2 リンク・サービスの基本構成

- 42.2.1 リンク・サービスの接続の設定

- 42.2.2 リンク・サービスの設計時の追加

- 42.2.2.1 リンク・サービス・タスク・フロー

- 42.2.2.2 リンク・サービスをアプリケーションに追加する方法

- 42.2.3 リンク・サービスのセキュリティの設定

- 42.2.4 リンク・サービスのトラブルシューティング

- 42.3 リンク・サービスの詳細情報

- 42.3.1 リンク・サービスREST APIの使用

- 42.3.1.1 リンクのエントリ・ポイント

- 42.3.1.2 リンク・リソース・タイプの分類

- 42.3.1.3 セキュリティ上の考慮事項

- 42.3.1.4 リンク・リソース・タイプ

43 タグ・サービスの統合

- 43.1 タグ・サービスの概要

- 43.1.1 タグ・サービスの理解

- 43.1.2 タグ・サービスの要件

- 43.1.3 実行時の処理

- 43.2 タグ・サービスの基本構成

- 43.2.1 タグ・サービスの接続の設定

- 43.2.2 タグ・サービスの設計時の追加

- 43.2.2.1 タグ・サービスのコンポーネント

- 43.2.2.2 タグ・サービス・タスク・フロー

- 43.2.2.3 タグ・サービスをページに追加する方法

- 43.2.2.4 タグ・サービス・タスク・フロー・パラメータを変更する方法

- 43.2.3 タグ・サービスのセキュリティの設定

- 43.3 タグ・サービスの詳細情報

- 43.3.1 タグ・サービスJava APIの使用

- 43.3.2 タグ・サービスREST APIの使用

- 43.3.2.1 タグ・エントリ・ポイント

- 43.3.2.2 タグ・リソース・タイプの分類

- 43.3.2.3 セキュリティ上の考慮事項

- 43.3.2.4 タグ・リソース・タイプ

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

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

- 43.3.5 タグ・サービスのトラブルシューティング

- 43.3.5.1 タグをクリックしたときにタグ・センターの結果が表示されない

- 43.3.5.2 タグ付けしたドキュメントがタグ・センターに表示されない

- 43.3.5.3 ページにタグ付けボタンが表示されない

- 43.3.5.4 タグ付けしたリソースをクリックしても正しいページに移動しない

44 検索サービスの統合

- 44.1 検索の概要

- 44.1.1 検索サービスの理解

- 44.1.1.1 Oracle SESアダプタを使用した検索の理解

- 44.1.1.2 WebCenter Portalの検索アダプタを使用した検索の理解

- 44.1.1.3 検索結果に対するクリック・アクション

- 44.1.2 実行時の処理

- 44.2 検索サービスの基本構成

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

- 44.2.2 Oracle SESの接続の設定

- 44.2.3 検索サービスの設計時の追加

- 44.2.3.1 検索サービス・タスク・フロー

- 44.2.3.2 検索サービスをページに追加する方法

- 44.2.3.3 検索サービス・タスク・フローのパラメータを変更する方法

- 44.2.4 検索サービスのセキュリティの設定

- 44.3 検索サービスの詳細情報

- 44.3.1 検索タスク・フローの追加

- 44.3.2 検索 - 保存済検索タスク・フローの追加

- 44.3.3 検索プリファレンス・タスク・フローの追加

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

- 44.3.5 WebCenter Portalの検索アダプタを使用する検索の構成

- 44.3.6 検索サービスJava APIの使用

- 44.3.7 検索サービスREST APIの使用

- 44.3.7.1 検索エントリ・ポイント

- 44.3.7.2 検索リソース・タイプの分類

- 44.3.7.3 セキュリティ上の考慮事項

- 44.3.7.4 リソース・タイプの検索

- 44.3.8 検索サービス・データ・コントロールの使用

- 44.3.8.1 検索データ・コントロールのメソッド、属性およびクラス

- 44.3.8.2 検索データ・コントロールの統合

- 44.3.9 検索サービスのアダプタの構築

- 44.3.9.1 検索ソースの追加方法

- 44.3.9.2 カスタム・アダプタの登録方法

- 44.3.9.3 検索アダプタの属性

- 44.3.9.4 実行時の処理

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

- 44.3.11 検索サービスのトラブルシューティング

45 アクティビティ・グラフ・サービスの統合

- 45.1 アクティビティ・グラフ・サービスの概要

- 45.1.1 アクティビティ・グラフ・サービスの理解

- 45.1.2 アクティビティ・グラフ・サービスの要件

- 45.1.3 実行時の処理

- 45.2 アクティビティ・グラフ・サービスの基本構成

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

- 45.2.2 アクティビティ・グラフ・サービスの接続設定

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

- 45.2.3.1 アクティビティ・グラフ・サービス・タスク・フロー

- 45.2.3.2 アクティビティ・グラフ・サービス・タスク・フローをページに追加する方法

- 45.2.3.3 アクティビティ・グラフ・サービス・タスク・フロー・パラメータを変更する方法

- 45.2.3.4 アクティビティ・グラフ・サービス・タスク・フローおよびタスク・フロー・パラメータ

- 45.3 アクティビティ・グラフ・サービスの詳細情報

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

- 45.3.1.1 getSimilarObjectsとqueryCommonObjectsのメソッドの追加

- 45.3.1.2 recordNotInterestedメソッドの追加

- 45.3.2 アクティビティ・グラフ・サービスREST APIの使用

- 45.3.2.1 アクティビティ・グラフのエントリ・ポイント

- 45.3.2.2 アクティビティ・グラフのリソース・タイプの分類

- 45.3.2.3 セキュリティ上の考慮事項

- 45.3.2.4 アクティビティ・グラフのリソース・タイプ

- 45.4 アクティビティ・グラフ・サービスの拡張

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

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

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

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

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

- 45.4.6 カスタムQRPPの登録

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

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

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

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

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

46 分析サービスの統合

- 46.1 分析サービスの概要

- 46.1.1 分析サービスの理解

- 46.1.2 分析サービスの要件

- 46.1.3 実行時の処理

- 46.2 分析サービスの基本構成

- 46.2.1 分析サービスの構成ロードマップ

- 46.2.2 分析サービスの接続の設定

- 46.2.2.1 分析データベースへの接続を設定する方法

- 46.2.2.2 分析コレクタのプロパティを設定する方法

- 46.2.2.3 分析コレクタへの接続を設定する方法

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

- 46.2.3.1 ページ・ビュー用のイベント・コードの追加

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

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

- 46.2.5.1 分析タスク・フロー

- 46.2.5.2 分析タスク・フローをページに追加する方法

- 46.2.5.3 分析タスク・フローのパラメータを変更する方法

- 46.2.5.4 分析タスク・フローの実行時のカスタマイズをエンド・ユーザーに許可する方法

- 46.2.5.5 分析タスク・フローおよびタスク・フロー・パラメータ

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

- 46.3 分析レポートの作成

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

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

- 46.3.2.1 分析SQL: WebCenterポータル・トラフィック

- 46.3.2.2 分析SQL: ページ・トラフィック

- 46.3.2.3 分析SQL: ログイン・メトリック

- 46.3.2.4 分析SQL: スペース・トラフィック

- 46.3.2.5 分析SQL: スペース・レスポンス時間

- 46.3.2.6 分析SQL: ポートレット・トラフィック

- 46.3.2.7 分析SQL: ポートレット・インスタンス・トラフィック

- 46.3.2.8 分析SQL: ポートレット・レスポンス時間

- 46.3.2.9 分析SQL: ポートレット・インスタンス・レスポンス時間

- 46.3.2.10 分析SQL: 検索メトリック

- 46.3.2.11 分析SQL: ドキュメント・メトリック

- 46.3.2.12 分析SQL: Wikiメトリック

- 46.3.2.13 分析SQL: ブログ・メトリック

- 46.3.2.14 分析SQL: ディスカッション・メトリック

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

- 46.3.3.1 サンプルSQL: ユーザー・プロパティによるフィルタ処理

- 46.3.3.2 サンプルSQL: ユーザー・プロパティによるグループ化

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

- 46.3.4.1 サンプルSQL: ユーザー・アクティビティ

- 46.3.4.2 サンプルSQL: スペース・アクティビティ

- 46.3.4.3 サンプルSQL: 特定の期間のスペース・アクティビティ

- 46.3.4.4 サンプルSQL: 特定の期間でのサービスのアクティビティ

- 46.3.4.5 サンプルSQL: 検索フレーズ

- 46.3.4.6 サンプルSQL: ページ・ビュー

47 リスト・サービスの統合

- 47.1 リスト・サービスの概要

- 47.1.1 リスト・サービスの理解

- 47.1.2 リスト・サービスの実行時の処理

- 47.2 リスト・サービスの基本構成

- 47.2.1 リスト・サービスの接続の設定

- 47.2.2 リスト・サービスの設計時の追加

- 47.2.2.1 リスト・サービス・タスク・フロー

- 47.2.2.2 リスト・サービスをアプリケーションに追加する方法

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

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

- 47.4 リスト・サービスREST APIの使用

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

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

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

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

- 47.4.4.1 urn:oracle:webcenter:space:lists

- 47.4.4.2 urn:oracle:webcenter:space:list

- 47.4.4.3 urn:oracle:webcenter:space:list:rows

- 47.4.4.4 urn:oracle:webcenter:space:list:row

- 47.4.4.5 urn:oracle:webcenter:space:list:columns

- 47.4.4.6 urn:oracle:webcenter:space:list:column

- 47.5 リスト・サービスのトラブルシューティング

48 通知の統合

- 48.1 通知の概要

- 48.1.1 通知の理解

- 48.1.2 通知の要件

- 48.1.3 実行時の通知の処理

- 48.2 通知の基本構成

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

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

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

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

- 48.2.4.1 サブスクリプション・デフォルトに関する必要な知識

- 48.2.4.2 通知のサブスクリプション・デフォルトの設定

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

- 48.2.5.1 通知タスク・フロー

- 48.2.5.2 通知タスク・フローをページに追加する方法

- 48.2.5.3 サブスクリプション・プリファレンス・タスク・フローの入力パラメータ

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

- 48.3 通知の詳細情報

- 48.3.1 通知Java APIの使用

- 48.3.1.1 通知Java APIを使用するために必要な構成設定

- 48.3.1.2 通知Java APIの概要

- 48.3.1.3 通知Java APIを使用するようにアプリケーションを設定する方法

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

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

- 48.3.2.2 通知サブスクリプション・データ・コントロールの理解

- 48.3.2.3 通知サブスクリプション・データ・コントロールのメソッドと属性

- 48.3.2.4 通知サブスクリプション・データ・コントロールのクラス

49 最近のアクティビティ・サービスの統合

- 49.1 最近のアクティビティ・サービスの概要

- 49.1.1 最近のアクティビティ・サービスの理解

- 49.1.2 実行時の処理

- 49.2 最近のアクティビティ・サービスの基本構成

- 49.2.1 最近のアクティビティ・サービスの接続の設定

- 49.2.2 最近のアクティビティ・サービスの設計時の追加

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

- 49.2.4 最近のアクティビティ・サービスのセキュリティの設定

- 49.3 最近のアクティビティ・サービスの詳細情報

- 49.3.1 最近のアクティビティ・サービスの動作の調整

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

50 ワークリスト・サービスの統合

- 50.1 ワークリスト・サービスの概要

- 50.1.1 ワークリストの理解

- 50.1.2 ワークリスト・サービスの要件

- 50.1.3 実行時の処理

- 50.2 ロードマップ - WebCenter Portal: Frameworkアプリケーションに対するワークリスト・サービスの構成

- 50.3 ワークリスト・サービスの基本構成

- 50.3.1ワークリスト・サービスの接続の設定

- 50.3.1.1 ワークリスト・サービスの接続

- 50.3.1.2 ワークリスト・サービスの接続を設定する方法

- 50.3.2ワークリスト・サービスの設計時の追加

- 50.3.2.1 ワークリスト・サービス・タスク・フロー

- 50.3.2.2 ワークリスト・サービスをアプリケーションに追加する方法

- 50.3.3 ワークリスト・サービスのセキュリティの設定

- 50.4 ワークリスト・サービスの詳細情報

51 イベント・サービスの統合

- 51.1 イベント・サービスの概要

- 51.1.1 イベント・サービスの理解

- 51.1.2 イベント・サービスの要件

- 51.1.3 実行時の処理

- 51.2 イベント・サービスの基本構成

- 51.2.1 イベント・サービスの構成ロードマップ

- 51.2.2 イベント・サービスの接続の設定

- 51.2.3 イベント・サービスの設計時の追加

- 51.2.3.1 イベント・タスク・フロー

- 51.2.3.2 イベント・サービスのアプリケーションへの追加方法

- 51.2.4 イベント・サービスのセキュリティの設定

- 51.3 イベント・サービスREST APIの使用

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

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

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

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

- 51.3.4.1 urn:oracle:webcenter:events:gsEvents

- 51.3.4.2 urn:oracle:webcenter:events:gsEvent

- 51.3.4.3 urn:oracle:webcenter:events:gsCategories

- 51.3.4.4 urn:oracle:webcenter:events:gsCategory

- 51.4 イベント・サービスのトラブルシューティング

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.2.1 RSSビューア・タスク・フローについて

- 52.2.2.2 RSSビューア・タスク・フローをアプリケーションに追加する方法

- 52.2.2.3 RSSビューア・タスク・フローのパラメータを変更する方法

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

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

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.5.2.1 リソース・タイプ

- 53.5.2.2 リレーションシップ

- 53.5.2.3 機能

- 53.5.2.4 メディア・タイプ

- 53.5.2.5 テンプレート

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

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

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

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

- 53.10 共通タイプの理解

- 53.10.1 共通タイプ

- 53.10.1.1 personReference

- 53.10.1.2 groupSpaceReference

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

- 53.10.2.1 nameポータブル連絡先タイプ

- 53.10.2.2 addressポータブル連絡先タイプ

- 53.10.2.3 organizationポータブル連絡先タイプ

- 53.10.2.4 valueポータブル連絡先タイプ

- 53.11 キャッシュの管理

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

- 53.13 WebCenter PortalのREST APIの例

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

- 53.13.1.1 リソース索引へのアクセス

- 53.13.1.2 メッセージの読取り

- 53.13.1.3 新しいメッセージの作成

- 53.13.1.4 メッセージの更新

- 53.13.1.5 メッセージの削除

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

- 53.13.3 WebCenterピープル・コネクション・サービスREST APIとExtの使用

- 53.13.3.1 HTMLページの作成

- 53.13.3.2 JavaScriptファイルの作成

- 53.13.3.3 結果

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

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

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

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

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

- 54.2.1.1 Siebelアプリケーションの準備

- 54.2.1.2 Frameworkアプリケーション内でのSiebel Webサービスの使用

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

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

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

- 54.3.1.1 EBS統合の理解

- 54.3.1.2 EBSアプリケーションを統合するための要件

- 54.3.2 FrameworkアプリケーションへのEBSアプリケーションの統合

- 54.3.2.1 EBSポートレットのリモート・アクセスの準備

- 54.3.2.2 FrameworkアプリケーションへのEBS WSRPプロデューサの登録

- 54.3.2.3 リモート・プロデューサを使用するためのJSFページの作成

- 54.3.2.4 Frameworkアプリケーションのテスト

- 54.3.3 SpacesへのEBSアプリケーションの統合

- 54.3.3.1 EBSポートレットのリモート・アクセスの準備

- 54.3.3.2 SpacesへのEBS WSRPプロデューサの登録

- 54.3.3.3 SpacesページへのEBSポートレットの追加

- 54.3.3.4 Spacesポートレット接続のテスト

- 54.4 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.2 SpacesへのJD Edwardsアプリケーションの統合

- 54.4.2.1 プロデューサの登録

- 54.4.2.2 SpacesページへのJD Edwardsポートレットの追加

- 54.4.2.3 Spacesポートレット接続のテスト

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

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

- 54.5.1.1 PeopleSoft統合の理解

- 54.5.1.2 PeopleSoftアプリケーションを統合するための要件

- 54.5.2 PeopleSoftアプリケーションのリモート・アクセスの準備

- 54.5.3 FrameworkアプリケーションへのPeopleSoftアプリケーションの統合

- 54.5.3.1 FrameworkアプリケーションへのPeopleSoft WSRPプロデューサの登録

- 54.5.3.2 リモート(WSRP)・プロデューサを使用するためのJSFページの作成

- 54.5.3.3 Frameworkアプリケーションのテスト

- 54.5.4 SpacesへのPeopleSoftアプリケーションの統合

- 54.5.4.1 SpacesへのPeopeSoft WSRPプロデューサの登録

- 54.5.4.2 SpacesページへのPeopleSoftポートレットの追加

- 54.5.4.3 Spacesポートレット接続のテスト

- 54.5.5 PeopleTools向けのWS-Securityの設定

- 54.5.5.1 メッセージ整合性付きのWSS10 SAMLトークン向けのWS-Securityの構成

- 54.5.5.2 メッセージ保護付きのWSS10 SAMLトークン向けのWS-Securityの構成

- 54.5.5.3 パスワード付きのWSS10ユーザー名トークン向けのWS-Securityの構成

- 54.5.5.4 パスワードなしのWSS10ユーザー名トークン向けのWS-Securityの構成

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

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

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

- 54.6.1.2 Oracle Business Intelligenceプレゼンテーション・サービスを統合するための要件

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

- 54.6.2.1 BIImpersonateUserの作成

- 54.6.2.2 BIImpersonateUserへの権限の付与

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

- 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.4 WebCenter Portal: SpacesへのOracle Business Intelligenceオブジェクトの統合

- 54.6.4.1 デプロイ後のプレゼンテーション・サービス接続の追加または変更

- 54.6.4.2 Spacesリソース・カタログへのOracle BIオブジェクトの追加

- 54.6.4.3 実行時のOracle BIコンテンツの追加

- 54.6.4.4 ビジネス・インテリジェンス・オブジェクトのプロンプト値の変更

- 54.6.4.5 ビジネス・インテリジェンス・タスク・フローの初期化パラメータの変更

55 JDeveloperを使用したSpacesアプリケーションの拡張

- 55.1 Spaces開発用のワークスペースのダウンロード

- 55.2 Spacesでの追加の共有ライブラリの指定

- 55.2.1 Spacesでの共有ライブラリのデプロイメントに関する必要な知識

- 55.2.2 独自のカスタム・コードおよびタスク・フローの共有ライブラリでのデプロイ

- 55.2.3 Spaces共有ライブラリ・リストの再ビルド

- 55.2.3.1 共有ライブラリ・リストの編集

- 55.2.3.2 ビルドおよびデプロイ・オプションの設定(config.properties)

- 55.2.3.3 共有ライブラリ・リストのビルドおよびデプロイ(extend.spaces.webapp.war)

- 55.2.3.4 前の共有ライブラリ・リストの回復

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

- 55.3 Spacesアプリケーション用のリソースの開発

- 55.3.1 ラウンドトリップ開発でのWebCenterSpacesResourcesプロジェクトの使用

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

- 55.3.3 Spacesアプリケーションへの直接アップロードの有効化

- 55.3.4 JDeveloperでのSpacesリソースの編集

- 55.3.4.1 JDeveloperへのSpacesリソースの直接ダウンロード

- 55.3.4.2 JDeveloperへのSpacesリソースのインポート

- 55.3.4.3 Spacesリソースを作成する方法

- 55.3.5 Spacesアプリケーションへのリソースの直接アップロード

- 55.3.6 Spacesリソースのアーカイブへのエクスポート

- 55.3.7 リソースのラウンドトリップ開発のトラブルシューティング

56 Oracle WebCenter Portal: Spacesとの統合

- 56.1 WebCenter Portal: Spacesの概要

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

- 56.2.1 Spaces APIの概要

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

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

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

- 56.2.4.1 Spacesアプリケーションが起動されて実行中であることの確認

- 56.2.4.2 Spaces APIを使用するためのWebCenter Portalアプリケーションの設定

- 56.2.4.3 アプリケーションとSpaces間の接続のセキュリティ保護

- 56.2.4.4 Spacesクライアント・コンテキストの設定

- 56.2.5 WebCenter PortalアプリケーションでSpacesの機能を提供する方法

- 56.2.5.1 スペースおよびスペース・テンプレートの管理

- 56.2.5.2 スペース・メンバーシップの管理

- 56.2.5.3 スペースおよびスペース・テンプレートの情報の取得

- 56.2.6 Spaces APIから発生した例外を処理する方法

- 56.2.6.1 ローカライズされたエラー・メッセージの提供

- 56.2.6.2 エラー・スタックのリスト

- 56.2.7 Spaces APIの詳細情報を見つける方法

- 56.2.8 Spaces APIでのトラブルシューティングの問題

- 56.3 WebCenter Portal: Spaces REST APIの使用方法

- 56.3.1 WebCenter Portal: Spacesのエントリ・ポイント

- 56.3.2 WebCenter Portal: Spacesのリソース・タイプの分類

- 56.3.3 WebCenter Portal: Spacesのセキュリティに関する考慮事項

- 56.3.4 WebCenter Portal: Spacesのリソース・タイプ

- 56.3.4.1 urn:oracle:webcenter:spaces

- 56.3.4.2 urn:oracle:webcenter:siteresources

- 56.3.4.3 urn:oracle:webcenter:spaces:resource:templates

- 56.3.4.4 urn:oracle:webcenter:space

- 56.3.4.5 urn:oracle:webcenter:space:resourceindex

- 56.3.4.6 urn:oracle:webcenter:space:roles

- 56.3.4.7 urn:oracle:webcenter:space:role

- 56.3.4.8 urn:oracle:webcenter:space:icon

- 56.3.4.9 urn:oracle:webcenter:space:attributes

- 56.3.4.10 urn:oracle:webcenter:space:attribute

- 56.3.4.11 urn:oracle:webcenter:space:members

- 56.3.4.12 urn:oracle:webcenter:space:member

- 56.3.4.13 urn:oracle:webcenter:space:lists

- 56.3.4.14 urn:oracle:webcenter:space:list

- 56.3.4.15 urn:oracle:webcenter:space:list:rows

- 56.3.4.16 urn:oracle:webcenter:space:list:row

- 56.3.4.17 urn:oracle:webcenter:space:list:columns

- 56.3.4.18 urn:oracle:webcenter:space:list:column

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

- 56.4.1 SpacesでのWebCenter Portalアプリケーションの公開

- 56.4.2 SpacesでのOracleアプリケーションの公開

- 56.4.3 Spacesでの非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.4 ポートレット開発

- 57.4.1 ポートレット・モード

- 57.4.1.1 表示モード

- 57.4.1.2 編集モード

- 57.4.1.3 デフォルト編集モード

- 57.4.1.4 ヘルプ・モード

- 57.4.1.5 情報モード

- 57.4.2 ポートレット間通信

- 57.4.3 ポートレットのパーソナライズとカスタマイズ

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

- 57.4.5 複数言語に対応したポートレット

- 57.4.6 ポートレット・デプロイメント

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.3.1 「ポートレット・エントリの作成」ダイアログを使用したタスク・フローからのポートレット作成

- 58.2.3.2 「タスク・フローのポートレット・エントリの管理」ダイアログを使用したタスク・フローからのポートレット作成

- 58.2.4 タスク・フローに基づいてポートレットを作成するときに行われる処理

- 58.3 統合WebLogic Serverを使用してのJSFポートレットのテスト

- 58.4 WebLogic Managed ServerへのJSFポートレットのデプロイ

- 58.5 イベントを使用したその他のポートレットとのJSFポートレットのリンク

- 58.5.1 別のJSFポートレットへのJSFポートレットのリンク方法

- 58.5.2 JSR 286ポートレットへのJSFポートレットのリンク方法

- 58.5.3 JSFポートレットへのJSR 286ポートレットのリンク方法

- 58.5.4 Oracle JSF Portlet Bridgeのポートレット・イベントに関する必知事項

- 58.6 JSFポートレットの作成時の必知事項

- 58.6.1 一般的なガイドライン

- 58.6.1.1 アプリケーションはWebアプリケーションとして実行する必要がある

- 58.6.1.2 ポートレットは様々なページに含まれる

- 58.6.1.3 サーブレットの依存性

- 58.6.1.4 保護されているアプリケーション

- 58.6.1.5 ディープ・リンク

- 58.6.1.6 Java EE認証

- 58.6.1.7 タイムアウト期間

- 58.6.2 ポートレットのガイドライン

- 58.6.2.1 ポートレットのサイズ変更

- 58.6.2.2 リソースとリンク

- 58.6.2.3 リクエストのリダイレクト

- 58.6.2.4 メモリー使用量

- 58.6.2.5 WSRPバージョン

- 58.6.3 セキュリティ・ガイドライン

- 58.6.3.1 Oracle ADF保護されたアプリケーション

- 58.6.3.2 ロール・ベースの認証

- 58.6.4 JSFガイドライン

- 58.6.4.1 h:commandLinkの使用

- 58.6.5 Oracle ADFのガイドライン

- 58.6.5.1 タスク・フロー・リターン

- 58.6.5.2 不一致のスタイル・シート

- 58.6.5.3 ADF Facesのダイアログ・フレームワーク

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

- 58.6.5.5 fileDownloadActionListenerコンポーネント

- 58.6.5.6 prepareModelフェーズ

- 58.6.5.7 リクエスト・パラメータへのアクセス

- 58.6.5.8 ページ・パラメータの参照

- 58.6.5.9 Trinidadコンポーネント

- 58.6.5.10 コンポーネントを見つけるためのADF Facesクライアント側APIの使用

- 58.6.5.11 URLのエンコーディング

- 58.6.5.12 goLinkの問題

- 58.6.5.13 プロトコル内リソース・リクエスト

- 58.7 実行時作成スキンの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.4.1 サポートされるコンテナ・ランタイム・オプション

- 59.3.4.2 アプリケーション内のすべてのポートレットに対するコンテナ・ランタイム・オプションの設定

- 59.3.4.3 個々のポートレットに対するコンテナ・ランタイム・オプションの設定

- 59.3.5 JSR 286ポートレットでのパブリック・レンダラ・パラメータの使用方法

- 59.3.5.1 アプリケーション・レベルでのパブリック・レンダラ・パラメータの宣言

- 59.3.5.2 ポートレットごとのパブリック・レンダラ・パラメータの定義

- 59.3.5.3 例: パブリック・レンダラ・パラメータ

- 59.3.6 JSR 286ポートレットでのポートレット・イベントの使用方法

- 59.3.6.1 アプリケーション・レベルでのポートレット・イベントの宣言

- 59.3.6.2 ポートレットごとの処理イベントの定義

- 59.3.6.3 ポートレットごとの公開イベントの定義

- 59.3.6.4 例: ポートレット・イベント

- 59.3.7 JSR 286ポートレットへのポートレット・プリファレンスの追加方法

- 59.3.7.1 JSR 286ポートレットへのポートレット・プリファレンスの追加

- 59.3.7.2 例: ポートレットの単純なパーソナライズ

- 59.3.8 JSR 286ポートレットでのポートレット・フィルタの使用方法

- 59.3.8.1 アプリケーションへのポートレット・フィルタの追加

- 59.3.8.2 ポートレットへのポートレット・フィルタの適用

- 59.3.9 キャッシュを使用してJSR 286ポートレットのパフォーマンスを向上する方法

- 59.3.9.1 JSR 286ポートレットの有効期限ベースのキャッシュの実装

- 59.3.9.2 JSR 286ポートレットの検証ベースのキャッシュの実装

- 59.3.10 リソース・プロキシに対して書きなおされたURLの実装方法

- 59.3.11 ステートレス・リソース・プロキシの実装方法

- 59.3.12 JSR 286ポートレット用のセキュリティの実装方法

- 59.3.13 JSR 286ポートレット用の永続ストアの管理方法

- 59.3.13.1 WSRPプロデューサ用の永続ストアのセットアップ

- 59.3.13.2 WSRPプロデューサの永続ストアの移行

- 59.3.13.3 データベース永続化ストアに対するJavaオブジェクト・キャッシュのアクセスの有効化

- 59.3.14 設計時にポートレット・プロデューサをエクスポートおよびインポートする方法

- 59.3.14.1 設計時のポートレット・プロデューサのエクスポート

- 59.3.14.2 設計時のポートレット・プロデューサのインポート

- 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.5.1 WSRPテスト・ページの非表示

- 59.4.5.2 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.1.1 ポートレットの作成ウィザードにアクセスできない

- 59.7.1.2 ポートレットに必要なポートレット機能が追加できない

- 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.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.5 JNDI変数の使用方法

- 60.3.5.1 JNDI変数の宣言

- 60.3.5.2 JNDI変数値の設定

- 60.3.5.3 JNDI変数の取得

- 60.3.6 セッション情報へのアクセス方法

- 60.3.7 キャッシュを使用してPDK-Javaポートレットのパフォーマンスを向上させる方法

- 60.3.7.1 PDK-Javaポートレットに対するキャッシュのアクティブ化

- 60.3.7.2 PDK-Javaポートレットでの有効期限ベースのキャッシュの実装

- 60.3.7.3 PDK-Javaポートレットでの有効化ベースのキャッシュの実装

- 60.3.8 PDK-Javaポートレットの永続ストアの管理方法

- 60.3.8.1 PDK-Javaプロデューサの永続ストアの設定

- 60.3.8.2 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 WARデプロイメント・プロファイルの作成

- 61.3 WebLogic管理対象サーバーへのポートレット・プロデューサのデプロイ

62 ポートレットの消費

- 62.1 ポートレットの消費の概要

- 62.2 WebCenter Portal: FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録

- 62.2.1 WSRPポートレット・プロデューサの登録方法

- 62.2.2 プロデューサ宣言のユーザー・カテゴリをアプリケーション定義のJava EEセキュリティ・ロールにマップする方法

- 62.3 WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録

- 62.4 ポートレット・プロデューサの接続の管理

- 62.4.1 ポートレット・プロデューサ登録設定の編集

- 62.4.2 ポートレット・プロデューサ接続のテスト

- 62.4.3 ポートレット・プロデューサのリフレッシュ

- 62.4.4 ポートレット・プロデューサの削除

- 62.5 ポートレット・プロデューサ・タスク・フローの追加

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

- 62.6.1 ページへのポートレットの追加方法

- 62.6.2 ページへのポートレットの追加時の処理

- 62.6.3 ポートレット間通信に関する必知事項

- 62.6.4 インライン・フレームに関する必知事項

- 62.6.5 ポートレットのサイズ設定に関する必知事項

- 62.6.6 最小化、リストアおよび移動に関する必知事項

- 62.6.7 実行時の処理

- 62.7 ポートレット・タグの属性値の設定

- 62.7.1 プロパティ・インスペクタを使用してポートレット・タグに属性値を設定する方法

- 62.7.2 ポートレット・タグの属性値をソース・コードで設定する方法

- 62.7.3 ポートレット・タグの共通属性

- 62.7.4 ポートレット・タグの外観属性

- 62.7.5 ポートレット・タグの動作属性

- 62.7.6 ポートレット・タグのポートレット・モード属性

- 62.7.7 ポートレット・タグのスタイル属性

- 62.7.8 ポートレット・タグのバインディング属性

- 62.7.9 ポートレット・タグのカスタマイズ属性

- 62.7.10 ポートレット・タグのその他の属性

- 62.8 JSR 286ポートレットでのパラメータとイベントの手動によるワイヤリング

- 62.8.1 パブリック・レンダラ・パラメータとポートレットの手動によるリンク方法

- 62.8.1.1 ページ変数を使用したパラメータの手動によるリンク

- 62.8.1.2 ParametersChange ADFコンテキスト・イベントを使用したパラメータの手動によるリンク

- 62.8.2 ポートレット・イベントとポートレットの手動によるリンク方法

- 62.9 ポートレットのコピー

- 62.9.1 同一ページ上でのポートレットのコピーおよび配置方法

- 62.9.2 異なるアプリケーション・ページ間でのポートレットのコピー方法

- 62.10 アプリケーション・ページからのポートレットの削除

- 62.11 WebCenterサービス・ポートレットの消費

- 62.11.1 Oracle PortalでのWebCenterサービス・ポートレットの消費方法

- 62.11.2 Oracle WebLogic PortalでのWebCenterサービス・ポートレットの消費方法

- 62.11.3 Oracle WebCenter InteractionでのWebCenterサービス・ポートレットの消費方法

- 62.11.4 WebCenterサービス・ポートレット・パラメータの設定方法

- 62.11.4.1 共通のWebCenterサービス・ポートレット・パラメータ

- 62.11.4.2 ドキュメント・マネージャ・ポートレット・パラメータ

- 62.11.4.3 ディスカッション・フォーラム・ポートレット・パラメータ

- 62.11.4.4 ブログ・ポートレット・パラメータ

- 62.11.4.5 リスト・ポートレット・パラメータ

- 62.11.4.6 投票マネージャ・ポートレット・パラメータ

- 62.11.4.7 投票の実施ポートレット・パラメータ

- 62.11.4.8 お知らせポートレット・パラメータ

- 62.11.4.9 メール・ポートレット・パラメータ

- 62.11.4.10 アクティビティ・ストリーム・ポートレット・パラメータ

- 62.11.4.11 タグ・クラウド・ポートレット・パラメータ

- 62.11.5 WebCenterサービス・ポートレットの制限

- 62.11.6 WebCenterサービス・ポートレットでの問題のトラブルシューティング

- 62.11.6.1 お知らせまたはディスカッション・フォーラム・ポートレットの外部リンクが機能しない

- 62.11.6.2 ドキュメント・マネージャおよびブログのポートレットの「リンクの取得」オプションが機能しない

- 62.11.6.3 ドキュメント・マネージャおよびブログのポートレットの「推奨」タブが空である

- 62.11.6.4 ブログにイメージを埋め込めない

- 62.11.6.5 「ブログ投稿」または「Wiki」でのリンクの作成時に選択したテキストが失われる

- 62.12 ポートレットのトラブルシューティング

- 62.12.1 ポートレットのトラブルシューティング用診断ツール

- 62.12.1.1 ポートレット・インスタンスの識別

- 62.12.1.2 ポートレット・コンシューマ・テスト・ページの調査

- 62.12.1.3 「プロデューサ・テスト・ページ」の調査

- 62.12.2 ポートレット・ログ・ファイルの構成

- 62.12.3 ポートレットでのポートレット・コンシューマ・エラーの表示

- 62.12.4 ポートレットでのポートレット・タイムアウトの表示

- 62.12.5 ポートレットでのリモート・ポートレット通信エラーの表示

- 62.12.6 ポートレットでのリモート・ポートレット・エラーの表示

63 OmniPortletを使用したポートレットの作成

- 63.1 OmniPortletの概要

- 63.2 アプリケーションへのOmniPortletの追加

- 63.3 OmniPortletのカスタマイズ

- 63.4 OmniPortlet構成のヒント

- 63.4.1 ファイアウォール外のデータにアクセスするためのOmniPortletプロデューサの構成

- 63.4.2 他のリレーショナル・データベースにアクセスするためのOmniPortletプロデューサの構成

- 63.4.2.1 DataDirect JDBCドライバのインストール

- 63.4.2.2 OmniPortletへのDataDirectドライバの登録

- 63.4.3 PortalツールおよびWebプロデューサの構成(オプション)

- 63.5 OmniPortletの問題のトラブルシューティング

64 Webクリッピングを使用したコンテンツ・ベースのポートレットの作成

- 64.1 Webクリッピングの概要

- 64.2 アプリケーションへのWebクリッピングの追加

- 64.3 シングル・サインオンを使用した認証されているWebコンテンツの統合

- 64.4 Webクリッピングの拡張機能

- 64.4.1 Webクリッピング・トランスポートAPIの使用方法

- 64.4.1.1 Webクリッピング・トランスポートAPIの実装

- 64.4.1.2 Webクリッピング・トランスポートAPIのデプロイ

- 64.4.2 リソース・プロキシを使用するためのイメージ・リンクのリライト

- 64.5 Webクリッピング・ポートレット構成のヒント

- 64.5.1 Webクリッピング・リポジトリの構成

- 64.5.1.1 Webクリッピング・リポジトリとしてのOracle Metadata Services (MDS)の使用方法

- 64.5.1.2 Webクリッピング・リポジトリとしてのOracleデータベースの使用方法

- 64.5.1.3 provider.xmlでのWebクリッピング・リポジトリの構成

- 64.5.1.4 repositoryInfoタグの属性および子タグ

- 64.5.1.5 Webクリッピング・リポジトリの移行

- 64.5.2 HTTPまたはHTTPSのプロキシ構成

- 64.5.3 Webクリッピング・プロデューサのセキュリティ

- 64.5.3.1 信頼できるサイトの証明書の追加

- 64.5.3.2 Webクリッピング・プロデューサに対するOracle Advanced Securityの構成

- 64.6 Webクリッピングに関する現在の制限

- 64.7 Webクリッピングのトラブルシューティング

65 Oracle WebCenter Portalのページレット・プロデューサを使用したページレットの作成

- 65.1 サーバー通信とプロキシの概要

- 65.1.1 ページレット・プロデューサのプロキシ

- 65.1.1.1 ページレットとプロキシの概要

- 65.1.2 HTTPとCSPについて

- 65.1.2.1 HTTP

- 65.1.2.2 CSP

- 65.2 Webアプリケーションでのページレットの使用

- 65.2.1 Oracle JDeveloperでのJSFページへのページレットの追加

- 65.2.1.1 WebCenter Portal: Frameworkアプリケーションへのページレット・プロデューサの登録

- 65.2.1.2 JSFページへのページレットの追加

- 65.2.1.3 ページレットの保護

- 65.2.2 Webページへのページレットの追加

- 65.2.2.1 JavaScriptを使用したページレットの挿入

- 65.2.2.2 RESTを使用したページレットへのアクセス

- 65.2.2.3 IFrameへの自動サイズ変更の使用

- 65.2.3 WebCenter Portal: Spacesでのページへのページレットの追加

- 65.3 ページレット・プロデューサを使用したページレットの構築

- 65.3.1 アダプティブ・ページレットのスクリプティング・フレームワークの使用

- 65.3.1.1 構造化されたHTTPレスポンスの処理

- 65.3.1.2 イベント通知の使用

- 65.3.1.3 インプレース・リフレッシュの使用

- 65.3.1.4 セッション・プリファレンスの使用

- 65.3.1.5 アダプティブ・ページレットの開発のヒント

- 65.3.2 ページレット・プロデューサの資格証明マッピングの使用

- 65.3.3 実行時のページレット機能の変更

- 65.3.3.1 Webインジェクタの作成

- 65.3.3.2 カスタム・パーサーの作成

- 65.3.4 ページレットのデバッグ

- 65.3.4.1 HTTPトレース

- 65.3.4.2 変換トレース

- 65.4 WSRPおよびOracle JPDKポートレットの使用

- 65.4.1 ページレット・クロムの使用

- 65.5 OpenSocialガジェットの使用

- 65.5.1 認証の構成

- 65.5.2 ユーザー・プリファレンスの格納

- 65.5.3 WebCenter Portalプロファイル情報へのアクセス

- 65.5.4 ユーザーのアクティビティ・ストリームへのアクセス

- 65.5.5 ガジェット・イベント処理の使用

- 65.5.6 例: 外部OpenSocialガジェットの消費

- 65.5.7 例: ローカルOpenSocialガジェットの消費

- 65.6 ページレットを使用したポートレット、ADFタスクフロー、OracleアプリケーションからのマークアップのOracle WebCenter Sitesへの統合

- 65.6.1 Oracle WebCenter Sitesへのページレットの追加

- 65.6.1.1 IFrameの自動サイズ変更の有効化

- 65.6.1.2 ページレット・スタイルの変更

- 65.6.2 アイデンティティ伝播の使用

- 65.6.2.1 ページレット・プロデューサでのアイデンティティの確立

- 65.6.2.2 ページレット・プロデューサにより指定されたログイン・ページの使用

- 65.6.3 ページレット・プロデューサからバックエンド・アプリケーションへのアイデンティティの伝播

- 65.6.3.1 WSRP/JPDKポートレット

- 65.6.3.2 ネイティブ認証(非SSO)により保護されたスタンドアロン・バックエンド・アプリケーション

- 65.6.3.3 自動ログインによるアイデンティティ伝播

- 65.6.3.4 SSOにより保護されたスタンドアロン・バックエンド・アプリケーション

- 65.6.3.5 参照: 共通自動ログイン構成

- 65.6.4 WSRPポートレットのページレットとしての消費

- 65.6.4.1 カスタムADFタスクフローをWSRPポートレットとして公開

- 65.6.5 サイトにおけるWebCenter Portalサービスのページレットとしての消費

- 65.6.5.1 要件

- 65.6.5.2 セキュリティおよびシングル・サインオンの構成

- 65.6.5.3 WSRPポートレットとして公開されたWebCenterサービスの登録

- 65.6.6 アプリケーションのページレットとしての消費(EBS11iの使用例)

- 65.6.6.1 基本のURLマッピング(プロキシ)に対するリソースの作成

- 65.6.6.2 自動ログインの構成

- 65.6.6.3 ページレットの作成

- 65.6.6.4 修正構成の作成

第XI部 パーソナライズされたコンテンツの配信

66 WebCenter Portalアプリケーションのパーソナライズ

- 66.1 パーソナライズの概要

- 66.1.1 パーソナライズ・アーキテクチャ

- 66.1.2 パーソナライズ・コンダクタ

- 66.1.2.1 パーソナライズされたシナリオ

- 66.1.2.2 パーソナライズされたアプリケーション・フロー

- 66.1.2.3 プロパティ・セットの統合

- 66.1.2.4 プロバイダの統合

- 66.1.3 パーソナライズ・プロパティ・サービス

- 66.1.3.1 プロパティ・サービスのアーキテクチャ

- 66.1.3.2 プロパティ・セット

- 66.1.3.3 プロパティ・ロケータ

- 66.1.4 パーソナライズ・プロバイダ

- 66.1.4.1 即時利用可能なプロバイダ

- 66.1.4.2 カスタム・データ・プロバイダ

- 66.1.4.3 ファンクション・プロバイダ

- 66.2 アプリケーションへのパーソナライズの統合

- 66.2.1 パーソナライズの要件

- 66.2.2 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.7 データ・プロバイダの実装とコール

- 66.2.2.8 デフォルト・プロバイダの使用

- 66.2.3 ファイル・ベースのシナリオの作成

- 66.2.4 実行時のターゲット・コンテンツの表示

- 66.2.4.1 コンテンツ・プレゼンタを使用したコンテンツの提供

- 66.2.4.2 カスタム・ユーザー・インタフェースを使用したコンテンツの提供

- 66.3 チュートリアル: 単純なアプリケーションの作成、テストおよびデプロイ

- 66.4 パーソナライズの拡張

- 66.4.1 カスタム・プロバイダの追加

- 66.4.1.1 AnnotatedConfigurationクラスの拡張

- 66.4.1.2 必要なインタフェースの実装

- 66.4.1.3 リソース・ファイルの作成

- 66.4.1.4 コンダクタへのデータ・プロバイダの関連付け

- 66.4.1.5 シナリオでのデータ・プロバイダの起動

- 66.4.2 カスタム・ロケータの追加

- 66.4.2.1 プロパティ・ロケータの理解

- 66.4.2.2 必要なインタフェースの実装

- 66.4.2.3 セキュリティの実装

- 66.4.2.4 プロパティ・セット定義の作成

- 66.4.2.5 すべての要素の結合

- 66.4.2.6 プロパティ・ロケータの起動

67 パーソナライズAPIの外部的な使用

- 67.1 Java APIの使用

- 67.2 プロパティ・サービスREST APIの使用

- 67.2.1 プロパティ・サービスのリソース索引へのアクセス

- 67.2.2 プロパティ・サービスを使用したネームスペースの作成

- 67.2.3 プロパティ・サービスを使用したネームスペース内のプロパティ・セット定義の表示

- 67.2.4 プロパティ・サービスを使用したネームスペース内のプロパティ定義の作成

- 67.2.5 プロパティ・サービスを使用したネームスペース内のプロパティ定義の表示

- 67.2.6 プロパティ・サービスを使用したネームスペース内のプロパティ・セット定義の作成

- 67.2.7 プロパティ・サービスを使用したネームスペース内のプロパティ・セットの作成

- 67.2.8 プロパティ・サービスを使用したネームスペース内のプロパティ・セットの表示

- 67.2.9 コンダクタのリソース索引へのアクセス

- 67.2.10 コンダクタを使用したネームスペースへのアクセス

- 67.2.11 コンダクタを使用したネームスペース内のシナリオの作成

- 67.2.12 コンダクタを使用したネームスペース内のシナリオの表示

- 67.2.13 コンダクタを使用したシナリオの実行

- 67.2.14 コンダクタを使用したネームスペース内のデータ・プロバイダの表示

- 67.2.15 コンダクタを使用したネームスペース内の詳細なデータ・プロバイダ・プロパティの表示

- 67.2.16 コンダクタを使用したネームスペース内のデータ・プロバイダ接続の表示

- 67.2.17 コンダクタを使用したネームスペース内のデータ・プロバイダ接続リソースの表示

- 67.2.18 コンダクタを使用したネームスペース内のデータ・プロバイダ接続リソース・メソッドの表示

- 67.2.19 コンダクタを使用したネームスペース内のファンクション・プロバイダの表示

- 67.3 プロパティ・サービスREST API

- 67.3.1 プロパティ・サービスのリソース索引

- 67.3.1.1 ResourceIndex

- 67.3.2 ネームスペースCRUD

- 67.3.2.1 ネームスペースの作成

- 67.3.2.2 ネームスペースの取得

- 67.3.2.3 ネームスペースの更新

- 67.3.2.4 ネームスペースの削除

- 67.3.2.5 すべてのネームスペースの取得

- 67.3.2.6 すべてのネームスペースの削除

- 67.3.3 プロパティ定義CRUD

- 67.3.3.1 プロパティ定義の作成 - 整数プロパティ定義の作成

- 67.3.3.2 プロパティ定義の作成 - 整数配列プロパティ定義の作成

- 67.3.3.3 プロパティ定義の取得

- 67.3.3.4 プロパティ定義の更新

- 67.3.3.5 プロパティ定義の削除

- 67.3.3.6 すべてのプロパティ定義の取得

- 67.3.3.7 すべてのプロパティ定義の削除

- 67.3.4 プロパティ・セット定義の作成、取得、更新および削除

- 67.3.4.1 プロパティ・セット定義の作成

- 67.3.4.2 プロパティ・セット定義の取得

- 67.3.4.3 すべてのプロパティ・セット定義の取得

- 67.3.4.4 すべてのプロパティ・セット定義の削除

- 67.3.5 プロパティ・セットCRUD

- 67.3.5.1 プロパティ・セットの作成

- 67.3.5.2 プロパティ・セットの取得

- 67.3.5.3 プロパティ・セットの更新

- 67.3.5.4 プロパティ・セットの削除

- 67.3.5.5 すべてのプロパティ・セットの取得

- 67.3.5.6 すべてのプロパティ・セットの削除

- 67.3.6 プロパティCRUD

- 67.3.6.1 プロパティの作成

- 67.3.6.2 プロパティの取得

- 67.3.6.3 プロパティの更新

- 67.3.6.4 プロパティの削除

- 67.3.6.5 すべてのプロパティの削除

- 67.3.7 JSONペイロード

- 67.3.8 例外

- 67.3.9 問合せパラメータ

- 67.3.10 検索式

- 67.3.10.1 書式

- 67.3.10.2 サポートされる演算子

- 67.3.10.3 サポートされる属性名

- 67.4 コンダクタREST APIの使用

- 67.4.1 データ・プロバイダ管理APIの使用

- 67.4.1.1 データ・プロバイダのコレクションの取得(GET)

- 67.4.1.2 単一のデータ・プロバイダのメタデータの取得(GET)

- 67.4.1.3 データ・プロバイダの接続に関する情報の取得(GET)

- 67.4.1.4 データ・プロバイダと接続で実行可能なリソースに関する情報の取得(GET)

- 67.4.1.5 データ・プロバイダと接続で実行可能なリソースのメソッド情報の取得(GET)

- 67.4.1.6 データ・プロバイダの全情報と詳細予測の取得(GET)

- 67.4.2 ファンクション・プロバイダ管理APIの使用

- 67.4.2.1 ファンクション・プロバイダのコレクションの取得(GET)

- 67.4.2.2 単一のファンクション・プロバイダのメタデータの取得(GET)

- 67.4.3 ネームスペース管理APIの使用

- 67.4.3.1 ネームスペースのコレクションの取得(GET)

- 67.4.3.2 単一のネームスペースの取得(GET)

- 67.4.3.3 ネームスペースの作成(POST)

- 67.4.3.4 ネームスペースの削除(DELETE)

- 67.4.4 シナリオ管理APIの使用

- 67.4.4.1 シナリオのコレクションの取得(GET)

- 67.4.4.2 単一のシナリオの取得(GET)

- 67.4.4.3 シナリオの作成(POST)

- 67.4.4.4 シナリオの更新(PUT)

- 67.4.4.5 シナリオの削除(DELETE)

- 67.4.4.6 シナリオの実行(POST)

- 67.5 ELを使用したパーソナライズ・クライアント・サービスのコール

- 67.5.1 JSFページからのパーソナライズ・クライアント・サービスのコール

- 67.5.2 JSPページからのパーソナライズ・クライアント・サービスのコール

- 67.5.3 パーソナライズ・コンテキスト・オブジェクトのメソッド・リファレンス

- 67.5.4 シングル・サインオンの有効化

第XII部 WebCenter Portalアプリケーションの完成

68 WebCenter Portal: Frameworkアプリケーションの保護

- 68.1 WebCenter Portal: Frameworkアプリケーションのセキュリティの概要

- 68.2 アプリケーション・ロールの作成

- 68.3 ADFセキュリティの構成

- 68.3.1 ADFセキュリティ設定の構成

- 68.3.2 WebCenter Portalサービスの自動セキュリティ権限付与

- 68.4 ロール・マネージャ・タスク・フローの使用

- 68.5 エンタープライズ・ロール・メンバー・タスク・フローの使用

- 68.6 ページ階層セキュリティ・エディタの使用

- 68.6.1 ページ階層セキュリティの概要

- 68.6.1.1 ページ階層モデル

- 68.6.1.2 ページ・レベルのセキュリティおよびページ階層セキュリティ

- 68.6.1.3 継承および委任されるセキュリティ

- 68.6.2 ページ階層の構築

- 68.6.2.1 ナビゲーションへのページ階層の追加

- 68.6.2.2 ページ階層へのページの追加

- 68.6.2.3 セキュリティの委任

- 68.7 ログイン・ページおよびログイン・コンポーネントの作成

- 68.8 ログイン・ポートレットの作成

- 68.9 ログイン・ページへのポートレットの追加

- 68.10 自己登録ページの作成

- 68.10.1 Spaces自己登録タスク・フローの統合

- 68.10.2 カスタム自己登録ページの構築

- 68.10.3 自己登録招待ページの作成

- 68.11 パスワードのリセット・ページの作成

- 68.12 ポートレット・パーソナライズをテストするための基本認証の構成

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

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

- 68.13.1.1 セキュアなサービス接続

- 68.13.1.2 自動シングル・サインオン

- 68.13.2 ユーザー資格証明の指定

- 68.13.3 外部アプリケーションの管理

- 68.13.3.1 外部アプリケーション・タスク・フローの追加

- 68.13.3.2 Oracle JDeveloperでの外部アプリケーションの処理

- 68.13.3.3 Enterprise Managerでの外部アプリケーションの処理

- 68.13.3.4 WLSTを使用した外部アプリケーションの処理

- 68.14 キーストアへのカスタム証明書の登録

- 68.15 ポートレットおよびカスタマイズ可能コンポーネントの継承されたセキュリティのオーバーライド

- 68.15.1 ポートレットのセキュリティ

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

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

- 68.16 アイデンティティ伝播メカニズム

- 68.17 WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護

- 68.17.1 WS-Securityを使用しないアイデンティティ伝播

- 68.17.2 WS-Securityを使用したアイデンティティ伝播

- 68.17.3 WSRPポートレットのセキュリティの構成

- 68.18 PDK-Javaポートレットのセキュリティの実装

- 68.18.1 前提事項

- 68.18.2 PDK-Javaポートレットのセキュリティ機能の概要

- 68.18.2.1 アイデンティティ伝播

- 68.18.2.2 認可

- 68.18.2.3 メッセージレベル・セキュリティ

- 68.18.3 シングル・サインオン

- 68.18.3.1 外部アプリケーション

- 68.18.3.2 アプリケーションによる認証がない場合

- 68.18.4 ポートレットのセキュリティ・マネージャ

- 68.18.4.1 独自のセキュリティ・マネージャの実装

- 68.18.5 メッセージ認証

- 68.18.6 ユーザー入力のエスケープ

- 68.18.6.1 デフォルト・コンテナ・エンコーディング

- 68.18.6.2 エスケープ・メソッド

- 68.19 セキュリティ問題のトラブルシューティング

- 68.19.1 使用されているコンテンツ・リポジトリのデータ・コントロール・メソッドを含むページの実行時に表示されるエラー・メッセージ

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

- 69.1 Oracle WebLogic Serverの概要

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

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

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

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

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

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

- 69.3.2.1 データベース接続とアプリケーション・セキュリティのパッケージ化

- 69.3.2.2 デプロイメント・プロファイルの作成

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

- 69.3.3.1 Oracle WebLogic管理対象サーバーのインスタンスの作成およびプロビジョニング

- 69.3.3.2 メタデータ・サービス・リポジトリの作成および登録

- 69.3.3.3 ターゲット環境の構成

- 69.3.3.4 WebLogic管理対象サーバー接続の作成

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

- 69.3.4.1 ローカル・データ・ソースを使用した管理対象サーバーへのデプロイ

- 69.3.4.2 グローバル・データ・ソースを使用した管理対象サーバーへのデプロイ

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

70 複数言語ポートレットの構築

- 70.1 ADF Facesコンポーネントの言語サポート

- 70.2 リソース・バンドルを使用した複数言語のサポート

第XIII部 付録

A WebCenter Portal: Frameworkアプリケーションのファイル

- A.1 ファイルについて

- 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.5.1 provider.xmlの構文

- A.5.5.2 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 web.xml

- A.6.8 weblogic-application.xml

- A.6.9 mdsサブディレクトリ

- A.6.10 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.8.1 pagetemplate-metadata.xml

- A.9 Oracle 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.1.1 addon-config

- B.2.1.2 property-panels

- B.2.1.3 lov-config

- B.2.1.4 event-handlers

- B.2.1.5 drop-handlers

- B.2.1.6 filter-config

- B.2.1.7 elbuilder-config

- B.2.1.8 selection-config

- B.2.1.9 pe_ext.xmlファイルのサンプル

- B.2.2 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.4 session-options-factory

- B.2.2.5 enable-design-views

- B.2.2.6 allow-elとprotect-el

- B.2.2.7 rcv-config

- B.2.2.8 customizableComponentsSecurity

- B.2.2.9 mds-config

- B.2.2.10 resource-string-editor

- B.2.2.11 enable-source-view

- B.2.2.12 enable-zoom

- B.2.2.13 persistent-change-manager

- B.2.2.14 taglib-config

- B.2.2.15 security-config

- B.2.2.16 サンプルadf-config.xmlファイル

- B.2.3 adf-settings.xml

- B.2.3.1 custComps-config

- B.2.4 web.xml

- B.2.4.1 CHANGE_PERSISTENCEコンテキスト・パラメータ

- B.2.4.2 WebCenterComposerFilter

- B.3 コンポーザのデフォルト・アドオンとプロパティ・パネル

- B.3.1 デフォルトのアドオン

- B.3.2 デフォルトのプロパティ・パネル

- B.4 コンポーザ・コンポーネント・スタイル固有のプロパティ

- B.4.1 コンポーザ・コンポーネントのスタイル・セレクタ

- B.4.1.1 グローバル・スタイル・セレクタ

- B.4.1.2 コンポーザ・ステータス・インジケータのスタイル・セレクタ

- B.4.1.3 Page Customizableのスタイル・セレクタ

- B.4.1.4 Layout Customizableのスタイル・セレクタ

- B.4.1.5 Panel Customizableのスタイル・セレクタ

- B.4.1.6 Show Detail Frameのスタイル・セレクタ

- B.4.2 スタイル属性

- B.5 カスタマイズ可能コンポーネント(HTML)のプロパティ

- B.5.1 Panel Customizable (HTML)コンポーネント

- B.5.2 Show Detail Frame (HTML)コンポーネント

- B.5.3 カスタマイズ可能コンポーネント(HTML)のスタイル・セレクタ

- B.5.3.1 Panel Customizable (HTML)のスタイル・セレクタ

- B.5.3.2 Show Detail Frame (HTML)のスタイル・セレクタ

- B.5.3.3 プロパティ・キー

- B.5.3.4 アイコン・セレクタ

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.1.1 例1: Oracle ADF FacesのTableコンポーネントのautoHeightRows属性が特定の値に設定されている場合

- D.1.1.2 例2: スクロール・レイアウトを使用するPanel Group Layout内のOracle ADF FacesのIteratorコンポーネント

- 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 ガイドラインに従って作成したタスク・フローを使用するFrameworkアプリケーションの例

- D.3.1 RecentPagesTaskFlowプロジェクト

- D.3.1.1 recent-pages-task-flow-definition.xmlファイル

- D.3.1.2 mainView.jsffフラグメント

- D.3.1.3 simpleEditPopupView.jspxページ

- D.3.1.4 advancedEditPopupView.jspxページ

- D.3.1.5 recentPagesBean Java Bean

- D.3.1.6 プリファレンスBean

- D.3.2 WebPagesプロジェクト

- D.3.2.1 Welcome.jspxファイル

- D.3.2.2 adf-config.xmlファイル

- 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.9.1 登録について

- E.2.9.2 実行時

- E.2.10 フェデレーテッド・ポータル・アダプタの制限に関する必知事項

- E.2.11 Oracle Application Serverの以前のバージョンからのOracle PDK-Javaプロデューサの再利用法

- E.2.11.1 Oracle Portalからのポートレットの使用

- E.2.11.2 Oracle PortalからのPDK-Javaプロデューサの再デプロイ

- E.3 アイテムの再利用

F 式言語式

- F.1 アプリケーションに関連するEL

- F.2 セキュリティに関連するEL

- F.3 一般設定に関連するEL

- F.4 アプリケーション・リソースに関連するEL

- F.5 ナビゲーションに関連するEL

- F.6 WebCenter Portalサービスに関連するEL

- F.7 ドキュメント・サービスに関連するEL

- F.8 ピープル・コネクション・サービスに関連するEL

- F.9 パーソナライズ・サービスに関連するEL

G WebCenter Portal分析データベース・スキーマ

- G.1 分析データベース・スキーマの概要

- G.1.1 分析データベース・モデルの概要

- G.1.2 分析データベース表の概要

- G.1.2.1 サンプルSQL問合せ: 特定のイベントに関連付けられた表名の検索

- 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.2.1 ASDIM_USERPROPERTIES

- G.5.2.2 ASDIM_USERPROPERTYVALUES

- G.5.3 WebCenter Portalの追加設定なしのユーザー・プロパティ

- G.6 分析イベントおよびディメンション・データ型

用語集

索引

Oracle® Fusion Middleware

Oracle WebCenter Portal開発者ガイド

11g リリース1 (11.1.1.7.0)

B72084-02(原本部品番号:E10148-20)

2013年4月

Oracle Fusion Middleware Oracle WebCenter Portal開発者ガイド, 11g リリース1 (11.1.1.7.0)

B72084-02

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

原本主著者:  William Witman

原本協力著者: Ingrid Snedecor, Michele Cyran, Peter Jacobsen, Rosie Harvey, Sarah Bernau, Savita Thakur, Sue Highmoor

原本協力者: Randy Akl, Maheswaran Anantharaman, Sivakumar Balagopalan, Rahmathulla Baig, Ravishankar Belavadi, Chris Broadbent, Steve Burns, Chris Carter, Chung Cheng, Vicki Chun, Ross Clewley, Manish Devgan, Marcus Diaz, Sumit Dubey, Frans Effendi, Paul Encarnacion, Gaurav Mittal, Jeni Ferns, Robin Fisher, Michael Freedman, Nick Greenhalgh, Christian Hauser, Harsha Huddar, Hsing Huang, Clayton Jung, Medini Kakade, Hrishikesh Karambelkar, Seshan Kennan, Sanjay Khanna, Vasant Kumar, Paul Lin, Yueh-Hong Lin, Alison Macmillan, George Maggessy, Dan Mullen, Lei Oh, Nicolas Pombourcq, Prabhakar Munnangi Reddy, Puvanenthiran Subbaraj, Rajesh Ramachandran, Sripathy Rao, Shubha Rangarajan, Shakeb Sagheer, Raghu Sampathkrishna, Andrew Sefkow, Jennifer Shu, Ved Singh, Vidhya Sundaram, Paul Spencer, Stephen Thornhill, Deepthi Umakanth, Kundan Vyas, Alistair Wilson, Stewart Wilson, Hui Zeng, Brad Posner, Steve Roth, Greg Smith, Tanya Saarva, Chris Bales, Ray Polk, Jeff Mueller, Pankash Kapasi, Sameer Sawant, Ken Young, Leevar Williams, Arun Tharakkal, Don Hayler, Cindy McMullen, Tom Porcaro, Dawn Tyler, Jordan Douglas

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

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

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

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007).Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、このソフトウェアまたはハードウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(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の登録商標です。

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

はじめに

このガイドでは、WebCenter Portal: Frameworkを使用したポータル・アプリケーションの構築方法および次のすべてのタスクに関する詳細情報について説明します。

- 反復開発やラウンドトリップ開発をはじめとするポータル開発環境の設定および準備

- Frameworkアプリケーションの計画、構築、デプロイおよび管理

- Frameworkアプリケーションとそのすべての関連コンポーネントの保護、管理、監視および保守

- ポータルのカスタム・ナビゲーション・ユーザー・インタフェースの開発

- Oracle WebCenter Portalサービス用のアプリケーションの準備、およびOracle WebCenter Portalサービスの構成および統合

- Frameworkアプリケーションへのコンテンツの統合

- Frameworkアプリケーションへのパーソナライズされたコンテンツの配信

- Frameworkアプリケーション用のポートレットの計画、構築、デプロイおよび管理

注意:

このマニュアルのPortable Document Format (PDF)版でURLが2行に分かれている場合は、このURLをクリックしてもブラウザに完全なURLデータは送信されません。PDFに含まれているURLにアクセスするには、URLをコピーし、ブラウザのアドレス・フィールドに貼り付けます。このマニュアルのHTML版では、リンクをクリックすればブラウザに直接リンク先が表示されます。

対象読者

このガイドは、読者がすでに『Oracle Fusion Middleware Oracle WebCenter Portal開発者用チュートリアル』を読んでおり、その手順を実行していることを前提としています。

このマニュアルの対象開発者は次のとおりです。

- 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.7.0)のドキュメント・セット内の次のドキュメントまたはOracle Technology Network (OTN)のhttp://www.oracle.com/technology/index.htmlを参照してください。

- Oracle Fusion Middleware Oracle WebCenter Portal開発者用チュートリアル

- Oracle Fusion Middleware Oracle WebCenter Portal: Spaces用チュートリアル

- Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド

- Oracle Fusion Middlewareエラー・メッセージ・リファレンス

- Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド

表記規則

このマニュアルでは次の表記規則を使用します。

表記規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語あるいは用語集に記載されている用語を示します。

イタリック体

イタリックは、ドキュメントのタイトル、強調またはユーザーが特定の値を指定するプレースホルダー変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

新機能

リリース11.1.1.7.0の新機能とは?主に、Apple iPad®のサポート、アクセシビリティの改善、パフォーマンス・メトリックの拡張およびページレット・プロデューサという4つの新機能があります。このリリースの新機能の要約と、詳細情報へのポインタについては、このクイック・リファレンス・ページを参照してください。

注意:

リリース11.1.1.7.0は、パッチ・セットに含まれます。パッチ・セットとは、一度のインストールでまとめて適用することを目的とした複数のパッチのコレクションです。Oracle WebCenter Portalおよび関連するすべての製品依存関係(WebCenter Contentなど)にパッチを適用する必要があります。パッチを適用すると、既存のインストールに含まれる少数のファイルのコレクションがコピーされます。

通常、パッチはOracle製品の特定のバージョンに関連付けられていて、製品のマイナー・バージョンが、同じ製品の新しいマイナー・バージョンに(たとえば、リリース11.1.1.6.0からリリース11.1.1.7.0に)更新されます。

サポートを継続するには、リリース11.1.1.7.0のパッチ・セットをインストールする必要があります。

リリース11.1.1.7.0の新機能および拡張機能

次の表では、このリリースの新機能および拡張機能について説明し、弊社ガイド内の詳細情報へのリンクを示します。

機能

説明

参照先

アクセシビリティ

- 高コントラストおよび大きなフォントのサポート

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のアクセシビリティ・オプションの設定に関する項

Apple iPad®のサポート

- iPad®(Admin UI、コンポーザおよびSpacesテンプレート)で現在サポートされている、Oracle WebCenter Portalの即時利用可能なアプリケーションとテンプレート。

- ADFコンポーネントはiPad®でレンダリングされます。

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の即時利用可能なページ・テンプレートに関する項

- Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド

ブログ

- ブログ・コメントに関するドキュメントの改善

- ブログへのリンクに関するドキュメントの改善

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のブログ・ページ・スタイルの理解に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のブログ投稿の管理に関する項

ドキュメント

- 「ドキュメントのアップロード」ペインの表示を変更する新しいJavaシステム・プロパティ。すべてのファイルに適用する1つの説明をオプションで提供して複数のファイルを一度に追加するか、ファイルごとに説明をオプションで提供して一度に1つのファイルを追加します。

- コンテンツ・プロファイルがある場合とない場合のファイルのアップロードに関するドキュメントの改善

- リッチ・テキスト・エディタでの表の操作に関するドキュメントの改善

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のファイルのアップロードに関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の「ドキュメントのアップロード」ペインの変更に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリッチ・テキスト・エディタでの表の操作に関する項

ルック・アンド・フィール

- HTML、CSS、JavaScript、メニュー、ページ・テンプレート、スタイルおよびスキンを一緒に使用して、アプリケーションのルック・アンド・フィールを定義する方法に関するガイダンス

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のルック・アンド・フィールの作成に関する項

複数言語に対応したポータル

- 言語サポートに関するドキュメントの改善

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のWebCenter Portalでの言語に関する必要な知識に関する項

ページレット・プロデューサ

- WebCenter Sitesのサポート

- ページレット・プロデューサを使用したポータルの統合

- ページレット・プロデューサのライフサイクルに関する追加情報

- 第65章「Oracle WebCenter Portalのページレット・プロデューサを使用したページレットの作成」

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracle WebCenter Portalのページレット・プロデューサの管理に関する項

パフォーマンス・メトリックおよびトラブルシューティング

- Fusion Middlewareのホームページの新しい外観と追加メニューは、WebCenter Portalアプリケーションに関するパフォーマンスの監視と問題の診断に役立ちます。

- 使用するシステムに対してカスタマイズ可能な主要パフォーマンス・メトリックの警告しきい値。この機能は、アプリケーションのページ、ポートレットまたはドキュメントのパフォーマンスに対して問題が影響し始めるとすぐにユーザーに警告します。Oracle WebLogic Serverの重要なパフォーマンス・インジケータ(CPU使用量、メモリー使用量、スレッド・アクティビティおよびJDBCリソースなど)に警告しきい値を設定することもできます。

- WebCenter Portalのシステム状態の解析および問題の診断に役立つ新機能の使用方法に関するガイダンス。

- 管理者がパフォーマンスと構成の問題を診断および解決する場合に役立つトラブルシューティングの付録。

- DFW(診断フレームワーク)インシデントのログを記録するサポート。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracle WebCenter Portalのパフォーマンスの監視に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWebCenter Portalのトラブルシューティングに関する項

プロファイル

- LDAPからデータベースへのプロファイル情報の同期化

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のプロファイルとアイデンティティ・ストアの同期化に関する項

第I部

概要

第I部の内容は次のとおりです。

- 第1章「開発者向けクイック・スタート・ガイド」

- 第2章「Oracle WebCenter Portalの理解」

- 第3章「開発環境の準備」

- 第4章「チームでの効率的な作業」

- 第5章「Frameworkおよびポートレット・プロデューサ・アプリケーションの作成」

- 第6章「拡張構成オプション」

- 第7章「WebCenter Portal Services用アプリケーションの準備」

1 開発者向けクイック・スタート・ガイド

開発者として、初めてのWebCenter Portal: Frameworkアプリケーションの作成に向けた準備を整えるときには、出発点を示して初めての工程を案内する、適切なロードマップが必要になります。この章では、初めて開発環境を設定するFrameworkアプリケーション開発者に向けたガイダンス、ベスト・プラクティス、およびヒントを提供します。

ヒント:

開始したばかりの場合は、まず、第1.1項「WebCenter Portal開発者向けFAQ」を参照することをお薦めします。

この章には次の項が含まれます:

- 第1.1項「WebCenter Portal開発者向けFAQ」

- 第1.2項「必要なソフトウェアのインストール」

- 第1.3項「チーム開発の準備」

- 第1.4項「新しいFrameworkアプリケーションの作成」

- 第1.5項「反復開発の準備」

- 第1.6項「アプリケーション・リソース接続の作成」

- 第1.7項「ポータルのレイアウトの計画」

- 第1.8項「スキンの使用」

- 第1.9項「ラウンドトリップ開発の準備」

- 第1.10項「知識が必要な構成ファイル」

- 第1.11項「データベース・スキーマのインストール」

1.1 WebCenter Portal開発者向けFAQ

表1-1では、Frameworkアプリケーション開発を開始するときに役立つ基本的な質問についての回答を示しています。

ヒント:

Frameworkアプリケーションの設計と作成を始める前に、第8章「Frameworkアプリケーションの理解」を一読しておくことをお薦めします。この章では、Oracle WebCenter Portal: Frameworkの概要を示し、ヒントと詳細情報へのリンクを提供しています。

表1-1 WebCenter Portal開発者向けFAQ

質問

回答

開始する前にどのようなソフトウェアをインストールしておく必要がありますか。

最低限必要なものは、Oracle JDeveloperとOracle JDeveloper用のWebCenter Portal拡張機能(WebCenter Portal機能を取り込むJDeveloperアドイン)です。一般的なポータル環境には、データベース、コンテンツ・リポジトリ、および検索エンジンのインストールも含まれます。第1.2項「必要なソフトウェアのインストール」を参照してください。

チーム用のソース・コントロールは、どのように設定するのですか。

JDeveloperは、各種のソース・コントロール・システムと統合できます。第1.3項「チーム開発の準備」を参照してください。

チームの生産性を向上するために何ができますか。

チームの生産性を向上する最適な方法は、反復開発を可能にすることです。反復開発を可能にすると、ブラウザをリフレッシュするだけで、実行時に更新されたポータル・ファイルの変更内容を確認できます。第1.5項「反復開発の準備」を参照してください。

新しいFrameworkは、どのように作成するのですか。

WebCenter Portalには、事前構成済Frameworkアプリケーションを作成する、即時利用可能なテンプレートが用意されています。この基本ポータル・アプリケーションには、開始に必要なすべての機能(ページのデフォルト・セット、即時利用可能なページ・テンプレートおよびナビゲーションなど)が含まれます。第1.4項「新しいFrameworkアプリケーションの作成」を参照してください。

デフォルトのFrameworkアプリケーションには、使用する予定のないファイルや機能が含まれています。これらを削除してもかまいませんか。

はい。Frameworkアプリケーション・コンポーネントを追加および削除できます。詳細は、第6.1項「テクノロジ・スコープによるFrameworkアプリケーションの手動構成」を参照してください。

データベース接続およびコンテンツ・リポジトリ接続は、どのように作成するのですか。

JDeveloperには、このような接続を作成するための接続ウィザードが用意されています。これらの接続は、ポータルで使用する特定のコンポーネント(コンテンツ・プレゼンタ・タスク・フローなど)をシームレスに統合します。第26章「コンテンツ・リポジトリ接続の管理」を参照してください。

ポータル用に高度にカスタマイズされたナビゲーションUIを作成しようと考えています。これは可能ですか。

はい。WebCenter Portal: Frameworkで提供されるAPIを使用して、ナビゲーションUIをレンダリングする場合の状況をすべて制御できます。ナビゲーションUIのレンダリング方法をカスタマイズするには、ELを使用する方法が一般的です。たとえば、ユーザーのロールに基づいて特定のリンクを非表示にしたり、指定の基準に基づいてリンクのルック・アンド・フィールを変更できます。詳細は、第13章「ポータル・ナビゲーションの視覚化」を参照してください。

デフォルトでは、ポータルのセキュリティはどのように構成されていますか。

デフォルトでは、FrameworkアプリケーションはADFセキュリティで構成されます。デフォルトのユーザー名とパスワード(weblogic/weblogic1)が自動的に作成され、このユーザー名とパスワードの組合せをテスト用にただちに使用できます。第68章「WebCenter Portal: Frameworkアプリケーションの保護」も参照してください。

ポータルにコンテンツを表示する方法は、どのようにカスタマイズするのですか。

一般的な技法の1つとして、コンテンツ・プレゼンタ・タスク・フローを使用する方法があります。コンテンツ・プレゼンタを使用すると、コンテンツをページに追加できるようになり、テンプレートを使用するコンテンツの表示方法をカスタマイズできるようになります。詳細は、第25章「コンテンツの統合と公開の概要」を参照してください。

ポータル内の各ページで一貫したレイアウトは、どのように作成するのですか。

ページ・テンプレート機能を使用すると、ポータル内のすべてのページで共有可能なレイアウトを作成できます。基本的なページ・レイアウトに加え、ナビゲーション・ユーザー・インタフェースなどの機能を、このテンプレートに追加することもできます。第1.7項「ポータルのレイアウトの計画」を参照してください。

大量のADFコンポーネントがあります。使用するコンポーネントは、どのように見つけるのですか。

WebCenter Portal: Frameworkには、「WebCenter Portal - Frameworkカタログ」があります。このカタログには、ポータルの作成に一般的に使用されるコンポーネントのコレクションが含まれています。詳細は、第15章「リソース・カタログの作成および管理」を参照してください。

デフォルトのスキンを変更しようと考えています。どうすればよいですか。

スキンは、ポータルの外観を定義するスタイル・シートです。WebCenter Portal: Frameworkには、JDeveloperで簡単に編集できるポータル・スキンが用意されています。詳細は、第1.8項「スキンの使用」を参照してください。

開発者は、本番環境にデプロイされているポータルに対して、新しいポータル機能の追加や変更ができますか。

WebCenter Portalは、ラウンドトリップ開発のソリューションを提供しています。第1.9項「ラウンドトリップ開発の準備」を参照してください。

ポータルを、開発環境から、テスト環境、ステージング環境、本番環境に移行する際には、どのような知識が必要ですか。

ポータルのライフ・サイクルとは、ポータルを、開発およびテスト環境から、ステージング環境、最終的には本番環境に移行する過程を表します。ライフ・サイクルの管理の詳細は、第9章「WebCenter Portalのライフ・サイクルの理解」を参照してください。

Frameworkアプリケーションの開発に関するより詳細な参考資料は、どこで入手できますか。

第8章「Frameworkアプリケーションの理解」を参照してください。この章では、Oracle WebCenter Portal: Frameworkの概要を示し、ヒントと詳細情報へのリンクを提供しています。

1.2 必要なソフトウェアのインストール

一般的な開発環境には、次のコンポーネントが含まれています。

- JDeveloper: 第3.1項「Oracle JDeveloperのインストール」を参照。

- WebCenter PortalのOracle JDeveloper用拡張機能: 第3.2項「WebCenter PortalのOracle JDeveloper用拡張機能のインストール」を参照。

- サポート対象データベース: (オプション) Oracle Database 11gなど。

- サポート対象コンテンツ・リポジトリ: (オプション) Oracle WebCenter Content 11gなど。

- 検索エンジン: (オプション) Oracle Secure Enterprise Search (SES)など。

『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』も参照してください。

1.3 チーム開発の準備

全体的なチーム開発環境について検討することは重要です。チーム開発環境が有益なものになるように、開発者がデータベース、コンテンツ・リポジトリ、ソース・コードなどの共通リソースを共有できるように、この開発環境を構成する必要があります。十分に計画されたチーム環境は、短期間で整合性のあるWebCenter Portal: Frameworkアプリケーションの開発、構築および更新が可能になります。

ヒント:

一般に、開発チームのメンバーは新しいFrameworkアプリケーションを作成して、それをソース・コード・リポジトリにチェックインします。必要なデータベース接続やコンテンツ・リポジトリ接続を作成して、それらも同様にチェックインできます。

ソース・コントロールやファイル共有など、チーム開発のヒントの詳細は、第4章「チームでの効率的な作業」を参照してください。

1.4 新しいFrameworkアプリケーションの作成

WebCenter Portal: Frameworkには、新しいポータル・アプリケーションを作成するためのウィザードが用意されています。このウィザードは、即時利用可能なWebCenter Portal - Frameworkアプリケーション・テンプレートを使用するため、適切なアプリケーション・コンポーネントが確実に含まれるようになります。

Frameworkアプリケーションの作成後に、データベース接続とコンテンツ・リポジトリ接続を構成して、それらもソース・コントロール・システムにチェックインします。

必要であれば、Frameworkアプリケーションを手動で構成することもできます。たとえば、使用しないことがわかっているコンポーネントは、Frameworkアプリケーションから削除してもかまいません。

Frameworkアプリケーションの作成方法、拡張方法および変更方法の詳細は、第5章「Frameworkおよびポートレット・プロデューサ・アプリケーションの作成」を参照してください。接続の管理の詳細は、第1.6項「アプリケーション・リソース接続の作成」を参照してください。

1.5 反復開発の準備

この項では、WebCenterの反復開発機能について説明します。

- 第1.5.1項「反復開発とは」

- 第1.5.3項「反復開発の有効化」

- 第1.5.4項「反復開発の無効化」

1.5.1 反復開発とは

反復開発では、統合WebLogic ServerでFrameworkアプリケーションを実行しながら、このアプリケーションに変更を加え、ブラウザの現在のページをリフレッシュするだけで、その変更の効果を確認することができます。反復開発機能は、特定の最適化機能を無効にすることにより動作します。反復開発機能により、開発者はFrameworkアプリケーションを作成する際、より迅速かつ効率的に作業できるようになります。

たとえば、反復開発では、次のコンポーネントに対する変更が、ブラウザをリフレッシュするとすぐに確認できます。

- ページ定義

- ナビゲーション・モデル

- ページ階層

- 既存のJSPXファイル

- ページ・テンプレート

- リソース・カタログ

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

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

次の種類の操作は、反復開発ではサポートされていません。これらの操作は、アプリケーションの再実行が必要になります。

- 新しいファイルの明示的な作成(JSPX、ページ定義、ページ階層など)。

- 新しいファイルの暗黙的な作成。たとえば、ページ階層のノードにサブページを追加すると、新しい*pages.xmlファイルが作成されます。

- 構成ファイル(web.xmlやadfc-config.xmlなど)の編集。

1.5.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.trinidadinternal.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」をクリックします。

1.5.3 反復開発の有効化

この項では、反復開発が無効にされている場合に有効化する方法を説明します。

注意:

反復開発機能は、新しいFrameworkアプリケーションの作成時には、デフォルトで有効になっています。

1. 「アプリケーション」メニューから、「アプリケーション・プロパティ」を選択します。

2. 「アプリケーション・プロパティ」ダイアログの左側で「実行」ノードを開きます。

3. 「WebCenter Portal」を選択します。

4. 図1-1に示すように、「反復開発の有効化」を選択します。

図1-1 「反復開発の有効化」

「図1-1 「反復開発の有効化」」の説明

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

1.5.4 反復開発の無効化

この項では、反復開発を無効にする方法を説明します。反復開発はデフォルトで有効化されていますが、アプリケーションを本稼働サーバーにデプロイする前に、テストのために反復開発をオフにすることをお薦めします。

1. 「アプリケーション」メニューから、「アプリケーション・プロパティ」を選択します。

2. 「アプリケーション・プロパティ」ダイアログの左側で「実行」ノードを開きます。

3. 「WebCenter Portal」を選択します。

4. 「反復開発の有効化」を選択解除します。

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

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

接続を使用することで、Frameworkアプリケーションは、外部データおよびサービスにアクセスできるようになります。たとえば、コンテンツ・プレゼンタ・タスク・フローを使用して、Oracle WebCenter Content Serverリポジトリのコンテンツを表示する場合は、そのリポジトリへの接続を構成する必要があります。ポートレット・プロデューサのポートレットを使用する場合は、そのプロデューサを構成する必要があります。

ヒント:

接続は作成後にテストしてから、ソース・コントロール・システムにチェックインすることをお薦めします。このようにすると、チーム内の別の開発者は、その接続をチェックアウトして使用できるようになります。この技法により、接続が変更された場合でも、チームの同期が保たれるようになります。

この項では、新しい接続を作成するウィザードにアクセスするための様々な方法について説明します。第1.6.3項「接続の詳細の参照先」も参照してください。

1.6.1 接続の場所について

接続を作成するためにウィザードを起動した方法に応じて、接続は次のいずれかの場所に配置されます。

- 「アプリケーション・ナビゲータ」の「アプリケーション・リソース」内
ここに作成した接続は、現在のアプリケーションでのみ使用できます。これは、リポジトリ接続を作成する最も一般的な方法です。

特定のサービスについては、「アプリケーション・リソース」から接続をドラッグして、別の種類のタスク・フロー・リージョンを作成するページにドロップできます。詳細は、個別のWebCenter Portal: Servicesの章を参照してください。

- 「リソース・パレット」の「IDE接続」内
ここに作成した接続は、どのFrameworkアプリケーションでも再利用できます。これに該当する接続をアプリケーションで使用する場合は、「リソース・パレット」から接続をドラッグして、そのアプリケーションの「接続」ノードにドロップします。

1.6.2 接続ウィザードにアクセスする方法

「新規ギャラリ」から接続ウィザードにアクセスするには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」で、「接続」を開き、作成する接続のタイプを選択してから、「OK」をクリックします。
選択内容に応じて、<Connection_Type>接続の作成ダイアログが開きます。

3. デフォルトでは、「接続の作成場所」オプションは「アプリケーション・リソース」に設定されます。
「IDE接続」を選択すると、「リソース・パレット」に接続を作成できます。

「アプリケーション・ナビゲータ」から接続ウィザードにアクセスするには:

1. 「アプリケーション・リソース」で「接続」ノードを右クリックし、「新規接続」を選択して、ポップアップ・メニューから接続のタイプを選択します。

2. 選択内容に応じて、<Connection_Type>接続の作成ダイアログまたはウィザードが開きます。
デフォルトでは、「接続の作成場所」オプションは「アプリケーション・リソース」に設定されます。

「リソース・パレット」から接続ウィザードにアクセスするには:

1. 「リソース・パレット」の「新規」アイコンをクリックし、「新規接続」を選択して、ポップアップ・メニューから接続のタイプを選択します。

2. 選択内容に応じて、<Connection_Type>接続の作成ダイアログまたはウィザードが開きます。
デフォルトでは、「接続の作成場所」オプションは「IDE接続」に設定されます。

1.6.3 接続の詳細の参照先

接続の作成と利用の詳細は、次を参照してください。

- 第26章「コンテンツ・リポジトリ接続の管理」

- 第62章「ポートレットの使用」

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

- 第69章「WebCenter Portal: Frameworkアプリケーションのデプロイおよびテスト」

1.7 ポータルのレイアウトの計画

ページ・テンプレートを使用すると、ポータルのレイアウトを制御できます。ページ・テンプレートとは、ポータルのページのルック・アンド・フィールを指定するJSPXファイルのことです。このテンプレートでは、ページ内のヘッダー、フッター、コンテンツおよびナビゲーション・リージョンを定義します。このテンプレートは、任意の数のページに適用できるため、一貫性の保たれたルック・アンド・フィールを実現できます。

WebCenter Portal: Frameworkには、出発点として利用できるデフォルトのページ・テンプレートが複数用意されています。詳細は、第8章「ページ、ページ・テンプレートおよびポータルのページ階層の理解」を参照してください。

1.8 スキンの使用

スキンは、ポータルの外観全体(色スキーム、フォント、ADF Facesコンポーネントの表示特性など)を定義するCSSファイルです。WebCenter Portal: Frameworkには、JDeveloperで便利に編集できるポータル・スキン・ファイルもあります。このファイルにより、デフォルト・スキンの設定を上書きできます。ファイルを開き、変更するコンポーネントを非コメント化して、変更が完了したらファイルを保存します。詳細は、第14章「スキンの作成および管理」を参照してください。

1.9 ラウンドトリップ開発の準備

ラウンドトリップ開発とは、メンテナンスや拡張のため、デプロイされた実行時ポータルからJDeveloperにリソースを戻すことができる機能および技法です。JDeveloperでリソースを編集した後、リソース・マネージャを使用して、デプロイされたポータルにリソースをアップロードし直すことができます。WebCenter Portalのラウンドトリップ開発機能は、アプリケーション全体を再度デプロイすることなくポータル・リソースを変更する、簡単で便利な方法を提供します。

ラウンドトリップ開発の詳細は、第16.3項「ポータルの実行時管理の有効化」および第16.4項「リソースのラウンドトリップ開発の有効化」を参照してください。

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

Frameworkアプリケーションを作成したときに自動生成されるいくつかの構成ファイルは、ポータル・プロジェクトのWEB-INFフォルダとPage Flowsフォルダに配置されます。

この項では、これらのファイルについて簡単に説明します。

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

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

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

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

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

Frameworkアプリケーション構成の一部は、J2EEアプリケーションのデプロイメント・ディスクリプタ・ファイルであるweb.xmlの内容で決まります。web.xmlファイルでは、アプリケーション・サーバーが必要とする多数のアプリケーション設定を定義します。

注意:

コンテキスト・ルート・パスは、web.xmlでは指定されていません。アプリケーションがデプロイされるときに割り当てられます。

一般的な実行時設定には、初期化パラメータ、カスタム・タグ・ライブラリの場所、セキュリティ設定などがあります。どのテクノロジを使用するかに応じて、その他の設定がweb.xmlに追加されていることがあります。

注意:

web.xmlなどの標準のJava EEファイルには、通常、これに対応するOracle固有のファイル(weblogic.xmlなど)があり、Oracle固有の追加のオプションが含まれています。

web.xmlファイルは、Frameworkアプリケーションのプロジェクトの相対ディレクトリ/public_html/WEB-INFに配置されます。

最初に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ファイルに関する項を参照してください。

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

カスタム・バリデータやマネージドBeanなどのFrameworkアプリケーションのリソースを登録して、すべてのページ間のナビゲーション・ルールを定義するには、faces-config.xmlファイルを使用します。このファイルのデフォルトの名前はfaces-config.xmlですが、このネーミング規則は必須ではありません。

リソースをパッケージ化する方法に応じて、1つのアプリケーションに1つまたは複数のfaces-config.xmlファイルを割り当てることができます。たとえば、次の項目ごとに個別のJSF構成ファイルを作成できます。

- アプリケーションの各領域

- カスタム・コンポーネントやレンダラを含む各ライブラリ

複数のfaces-config.xmlファイルの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

例1-1に、WebCenter Portal: Frameworkアプリケーション・テンプレートによって提供されるデフォルトのfaces-config.xmlファイルを示します。このファイルは、Frameworkアプリケーションのプロジェクトの相対ディレクトリ/public_html/WEB-INFに配置されます。

例1-1 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>
<managed-bean>
<managed-bean-name>preferenceBean</managed-bean-name>
<managed-bean-class>oracle.webcenter.portalframework.sitestructure.PreferencesBean
</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
</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構成に関する項を参照してください。

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

Frameworkアプリケーションの作成時に利用可能なデフォルトのtrinidad-config.xmlファイルには、アプリケーション・スキン・ファミリに関する情報が含まれます。さらに、これにはページ・アクセシビリティ・サポートのレベル、ページ・アニメーション、タイムゾーン、拡張デバッグ出力およびOracle Help for the Web (OHW)のURLに関する情報を含めることができます。faces-config.xml同様、trinidad-config.xmlファイルは、JSF式言語(EL)または静的値を使用して要素プロパティを定義できる単純なXML構造を持ちます。

例1-2に、WebCenter Portal: Frameworkアプリケーション・テンプレートによって提供されるデフォルトのtrinidad-config.xmlファイルを示します。このファイルは、Frameworkアプリケーションのプロジェクトの相対ディレクトリ/public_html/WEB-INFに配置されます。

例1-2 Frameworkアプリケーション・テンプレートによって提供されるデフォルトのtrinidad-config.xmlファイル

<?xml version="1.0" encoding="US-ASCII"?>
<trinidad-config xmlns="http://myfaces.apache.org/trinidad/config">

<skin-family>fusion</skin-family>

</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構成に関する項を参照してください。

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

adfc-config.xmlファイルは、ADFのバインドなしタスク・フローの構成ファイルです。このファイルには、バインドなしタスク・フローに含まれるアクティビティと制御フローに関するメタデータが格納されています。このファイルのデフォルトの名前はadfc-config.xmlですが、このネーミング規則は必須ではありません。

「プロジェクト・プロパティ」ダイアログの「テクノロジ・スコープ」ページで、選択済のテクノロジとして「ADFページ・フロー」が指定されている場合は、自動的に新しいadfc-config.xmlソース・ファイルがプロジェクト内に作成されます。このadfc-config.xmlファイルは、バインドなしタスク・フローのメイン・ソース・ファイルです。

adfc-config.xmlファイルは、Frameworkアプリケーションのプロジェクトの相対ディレクトリ/public_html/WEB-INFに配置されます。

注意:

Frameworkアプリケーションでタスク・フローを使用する予定がない場合は、adfc-config.xmlファイルを削除してもかまいません。

タスク・フローおよびadfc-config.xmlファイルの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のOracle ADF XMLファイルに関する項を参照してください。

1.11 データベース・スキーマのインストール

Oracle WebCenter Portalの特定のコンポーネントでは、スキーマがサポート対象データベースにインストールされている必要があります。詳細は、第3.5項「データベース・スキーマのインストール」を参照してください。

2 Oracle WebCenter Portalの理解

この章では、Oracle WebCenter Portalの概要について説明します。この章は、WebCenterテクノロジを使用してアプリケーションを作成するときに、考慮する必要のある事項について理解するために役立ちます。

この章には次の項が含まれます:

- 第2.1項「Oracle WebCenter Portalとは」

- 第2.2項「WebCenter Portal: Frameworkの概要」

- 第2.3項「WebCenter Portal: Frameworkの主な機能」

- 第2.4項「Oracle WebCenter Portal: Servicesの概要」

- 第2.5項「Oracle Application Development Framework (Oracle ADF)の概要」

- 第2.6項「Oracle JDeveloperおよびWebCenter Portal拡張機能の概要」

- 第2.7項「アプリケーション・ライフ・サイクルの理解」

- 第2.8項「開始前に考慮する必要のある設計上の問題」

- 第2.9項「WebCenterアクセシビリティ機能の概要」

対象読者

この章は、Frameworkアプリケーションの開発者を対象としています。開発者は、この章をよく読んで、どのようなオプションが使用できるかを見定める必要があります。

2.1 Oracle WebCenter Portalとは

Oracle WebCenter Portalは、企業ポータル、商取引用Webサイト、およびソーシャル・ネットワーク・サイトを構築するための設計時ツールと実行時ツールを提供しています。WebCenterの一般的なユース・ケースとして、従業員用イントラネット、顧客用エクストラネット、ダッシュボード、ブログやWiki、コミュニティ・ディスカッション・フォーラム、オンライン・ストアなどがあげられます。WebCenterには、このようなアプリケーションの作成に必要なツールが用意されています。

図2-1は、この製品を構成する主要コンポーネントを示して、Oracle WebCenter Portalアーキテクチャの概要を説明しています。

図2-1 Oracle WebCenter Portalアーキテクチャの概要

「図2-1 Oracle WebCenter Portalアーキテクチャの概要」の説明

2.2 WebCenter Portal: Frameworkの概要

Oracle WebCenter Portal: Frameworkは、ポータル固有の機能をFrameworkアプリケーションに提供します。これらの機能には、ページ階層、ナビゲーション・モデル、委任セキュリティ、カスタマイズなどが含まれます。ポータルには、ポートレット、コンテンツ管理システムの統合、パーソナライズ、ソーシャル・コンピューティング・サービス、検索、分析などの機能を含めることもできます。

エンド・ユーザーから見ると、ポータルは、タブなどのナビゲーション・フォームで編成されたページを持つWebサイトです。各ページには、ポートレット、静的コンテンツ、動的コンテンツ、タスク・フローなどが含まれます。また、許可されているユーザーは、独自のページを追加したり、各自が選択したポートレットを追加したり、インタフェースのルック・アンド・フィールを変更することで、ポータルのビューをカスタマイズできます。

Oracle WebCenter Portal: Frameworkの全体的な概要は、第8章「Frameworkアプリケーションの理解」を参照してください。

2.3 WebCenter Portal: Frameworkの主な機能

この項では、Frameworkアプリケーションで使用できる、いくつかの主な機能について説明します。これらの機能では、リモート・アプリケーションの統合、ページのカスタマイズ、コンテンツの統合、パーソナライズ、セキュリティなどをサポートします。

- 第2.3.1項「リモート・アプリケーションおよびサービスにアクセスするためのポートレットとページレット」

- 第2.3.2項「ユーザー・カスタマイズが可能なOracle WebCenter Portalのコンポーザ」

- 第2.3.3項「サポート対象コンテンツ・リポジトリによるコンテンツの統合」

- 第2.3.4項「検索フレームワーク」

- 第2.3.5項「開発エクスペリエンスの編成を支援するリソース・カタログ」

- 第2.3.6項「アプリケーションのセキュリティ」

2.3.1 リモートのアプリケーションおよびサービスにアクセスするためのポートレットとページレット

このセクションでは、ポートレットとページレットという2つのテクノロジについて説明します。これらを使用すると、リモートのアプリケーションをポータル・ページに統合できます。

- 第2.3.1.1項「ポートレットとは」

- 第2.3.1.2項「ページレットとは」

2.3.1.1 ポートレットとは

ポートレットは、様々なソースからのコンテンツを描画できる、再利用可能なWebコンテンツです。ポートレットは、複数のソースからのデータを意味のある関連した方法で提示する手段を提供します。ポートレットでは、他のWebサイトからの抜粋の表示、主要情報のサマリーの生成、検索の実行および多様なデータ・ソースの情報を収集したコレクションへのアクセスなどを実行できます。共通のページに様々なポートレットを配置できるため、ユーザーは単一のソースとして利用できます。実際には、コンテンツは複数のソースから導出されています。

ポートレットを作成する様々な方法とポートレット(WebCenter Portalで利用可能な、事前に構築されているポートレットを含む)の使用方法については、第57章「ポートレットの概要」を参照してください。ページでのポートレットの消費やリンクについては、第62章「ポートレットの消費」を参照してください。

2.3.1.2 ページレットとは

ページレットは、ポートレットに類似した、再利用可能なユーザー・インタフェース・コンポーネントですが、ポートレットはポータル専用に設計されたもので、ページレットは、ポータルや他のWebアプリケーション内など、どのWebページでも実行できます。ページレットは、他のWeb環境でプラットフォームに固有のポートレットを公開する場合に使用できます。任意のHTMLフラグメントがページレットになりますが、ページレット開発者は、ポートレット開発者が利用できる様々な機能を活用して、パラメータ化された構成可能なページレットを記述し、その他のページレットと動的にやり取りして、Ajaxパターンでユーザー入力に応答することもできます。

Oracle WebCenter Portalのページレット・プロデューサは、動的ページレットの開発を容易にする有用なツールと機能のコレクションを提供します。ページレット・プロデューサを使用したページレットの開発および構成の詳細は、第65章「Oracle WebCenter Portalのページレット・プロデューサを使用したページレットの作成」を参照してください。

2.3.1.3 ポートレットとタスク・フローの相違点

第2.3.1.1項「ポートレットとは」で説明したように、ポートレットは、各種のソースからのコンテンツを描画できる、再利用可能なWebコンポーネントです。ポートレットでは、静的HTMLから、複雑なWebサービスや処理負荷の高いアプリケーションのためのJavaのコントロールまで、どのようなものでも管理と表示が可能です。

1つのポートレットで複数のインスタンスを保持することもできます。つまり、1つのポータル内の各種ページにポートレットが表示され、ポートレットがWeb Services for Remote Portlets (WSRP)に対して有効な場合は複数のポータル間でも表示できます。特定のユーザーやグループのニーズに応えるようにポートレットをカスタマイズできます。

タスク・フローを使用すると、カスタマイズ可能なアプリケーションを、再使用可能なビジネス・ロジックのユニットで作成できます。これは、アプリケーションの制御フローをモジュール単位で定義するアプローチを意味します。それぞれのタスク・フローは、再利用可能な1つのビジネス・ロジックを表します。メモリーとトランザクションのスコープが分離されているため、タスク・フローとそれを囲むアプリケーションは分離されています。この分離より、Oracle WebCenter Portalのコンポーザなどにタスク・フローを含めることができます。

タスク・フローは、制御フローのルール、アクティビティおよびマネージドBeanをカプセル化して、ビジネス・モジュールを実装します。WebCenter Portalのアプリケーションでは、簡単にタスク・フローを再利用できます。タスク・フローは、カスタマイズ可能な任意のWebLogic Portalアプリケーション・ページにドラッグ・アンド・ドロップできます。このような意味で、タスク・フローは、任意のADFアプリケーションでの再利用や削除が可能な論理ポートレットとみなすことができます。

タスク・フローはビジネス・プロセスの高水準の実装ですが、データアクセスやビジネス・ロジックをホストすることはありません。そのためには、タスク・フローがデータ・コントロールや宣言バインディングと相互作用する必要があります。さらに、これらのデータ・コントロールやバインディングは、ADFビジネス・コンポーネント・フレームワークと相互作用します。

Oracle発行の標準JSR 329に従い、タスク・フローを標準ベースのポートレットとして公開できます。このように、1つのアプリケーションに、ベース・アプリケーションの機能と、統合に消費されるポートレットの両方が含まれます。アプリケーションを改訂すると、ポートレットは、アプリケーションとともに必然的かつ自動的に更新されます。個別の開発プロジェクトは必要ありません。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開発者ガイド』の第14章「ADFタスク・フローの概説」を参照してください。

2.3.2 ユーザー・カスタマイズが可能なOracle WebCenter Portalのコンポーザ

コンポーザは、既存のJSFアプリケーションに追加できる、簡単なブラウザベースの環境です。エンド・ユーザーは、コンポーザを使用して、実行時にページを編集し、独自のマッシュアップを作成できます。この方法で実行時にページを編集できるようにする場合は、コンポーザの設計時コンポーネントをJDeveloperでページに追加します。コンポーザのコンポーネントのみを含む空のページをJDeveloperで作成すると、ユーザーは、編集モードのときにコンポーザを使用して、ページを再設計できるようになります。実行できるタスクには、次のものがあります。

- ページの設定とパラメータの編集

- ページへのコンテンツの追加

- コンポーネントのプロパティとパラメータの編集

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

- ページへのコンテンツの配置

- ページのコンポーネントのレイアウトの変更

- ページからのコンポーネントの削除

コンポーザ・タグ・ライブラリには、実行時にページを編集可能にして、ページ上のコンテンツの動作(コンポーネントの移動、配列、非表示など)を定義するために追加できるコンポーネントが用意されています。

コンポーザの「コンポーネント・カタログ」ダイアログ・ボックス(ページ上の「追加」ボタンをクリックすると表示されます)には、デフォルトの実行時リソース・カタログ・ビューアが表示されます。ユーザーは、このビューアでコンポーネントを参照して、そのコンポーネントをページに追加できます。ビューアには、デフォルトで、アプリケーションで使用可能なすべてのOracle ADFコンポーネントおよびポートレットが含まれるデフォルトのリソース・カタログが表示されます。ビューアでユーザーに表示するコンポーネントを制御するには、デフォルトのリソース・カタログを変更するか、独自のリソース・カタログを1つ以上作成します。リソース・カタログには、ポートレット、レイアウト・コンポーネント、タスク・フロー、ドキュメント、Oracle ADF Facesコンポーネントなどの項目を含めることができます。

アプリケーションにコンポーザ・コンポーネントを実装する方法の詳細は、第19章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

2.3.3 サポート対象コンテンツ・リポジトリによるコンテンツの統合

JCR (Javaコンテンツ・リポジトリAPI、JSR 170とも呼ばれる)アダプタを使用すると、アプリケーションから使用可能なOracle WebCenter ContentやOracle Portalなどのコンテンツ管理システム、またはファイル・システムにデータを格納できます。

JDeveloperを使用すると、作成済のJCRデータ・コントロールを使用して、コンテンツを選択してからページにドロップできます。提供されている作成済のユーザー・インタフェースを利用して、Frameworkアプリケーションでコンテンツを表示できます。このアーキテクチャにより、ユーザー・インタフェースを一度作成すると、デプロイメント時または実行時に、アプリケーションを再コンパイルまたは再ビルドすることなく、必要とされるどのバック・エンドにでも切替えできるようになります。さらに、各コンテンツ管理システムのカスタムAPIに関する複雑な内容について理解している必要もなくなります。たとえば、JCR 1.0準拠のリポジトリまたはファイル・システムからコンテンツを選択するデータ・コントロールを作成できます。このデータ・コントロールが作成されると、そのコントロールを表としてJSPドキュメントにドロップできます。

Oracle Portal、Oracle WebCenter Content、またはファイル・システム以外のコンテンツ・リポジトリからデータを取得する場合には、独自のJCRアダプタを作成できます。データ・コントロールの作成ウィザードの「コンテンツ・リポジトリ構成」ページから、取得するデータが含まれるコンテンツ・リポジトリを選択します。

「コンテンツ・プレゼンタ」タスク・フローを使用すると、アプリケーションにコンテンツを効率的に追加できるようになります。コンテンツ・プレゼンタを使用すると、単一のコンテンツ・アイテム、複数のコンテンツ・アイテムまたはコンテンツの問合せを選択してから、Frameworkアプリケーションのページでそのコンテンツをレンダリングするためのテンプレートを選択できます。さらに、コンテンツ・プレゼンタのカスタム表示テンプレートを設計できます。第28章「コンテンツ・プレゼンタ表示テンプレートの作成」を参照してください。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のコンテンツ・プレゼンタを使用したコンテンツの追加に関する項と、第26章「コンテンツ・リポジトリ接続の管理」も参照してください。

2.3.4 検索フレームワーク

検索は、あらゆるWebアプリケーションの機能のうち、最も一般的で役立つ機能の1つです。Oracle WebCenter Portal: Frameworkには、直感的なユーザー・インタフェースで情報や人物を検索できる、拡張可能な統合検索フレームワークが備わっています。この強力な検索フレームワークを使用すると、エンタープライズ規模の検索機能をシームレスにアプリケーションに組み込めます。関係のある、すべてのセキュアな情報間を簡単にナビゲートできるため、ユーザーは、複数の検索を行っているアプリケーション間を行き来する必要がなくなります。第44章「検索サービスの統合」を参照してください。

2.3.5 開発エクスペリエンスの編成を支援するリソース・カタログ

リソース・カタログを使用すると、統合された検索および参照のユーザー・インタフェースに、本来であれば関連しない1つ以上のリポジトリのコンテンツの結合ビューが提供されます。各リソースは、それぞれのソース・リポジトリで作成および公開された後、JDeveloperの「リソース・パレット」を通じて開発者に公開され、リソース・カタログ・ビューアを通じてエンド・ユーザーに公開されます。「リソース・パレット」には、ポータル開発で一般的に使用される要素を含むWebCenterポータル・カタログが格納されています。

リソース・カタログには、次のコンポーネントを含めることができます。

- レイアウト・コンポーネント。プライマリ・レイアウト・コンポーネントはBoxです。これは、他のタイプのコンポーネントをすべて含めることができるコンテナです。実行時に、コンポーネントをドラッグ・アンド・ドロップできるBoxを使用する必要があります。Boxから子コンポーネントを追加および配置したり、コンポーネントを削除したりすることもできます。『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。

- Oracle ADF Facesコンポーネント。Text、Image、Page Link、Web PageおよびWebsite Linkコンポーネントをページに追加できます。これらは、それぞれJDeveloperの設計時コンポーネントであるRich Text Editor、Image、Command Link、Web PageおよびGo Linkと同様のものです。
Textコンポーネントでは、ページにリッチ・テキストを追加できます。このコンポーネントを追加すると、サイズ変更可能でHTMLエディタに類似のテキスト・エディタが起動されます。テキストを追加し、エディタで使用可能なオプションを使用して書式設定できます。『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。

- ポートレット。JDeveloperに登録されている任意のプロデューサから、WSRP、JSF Portlet BridgeポートレットまたはPDK-Javaポートレットを追加できます。ポートレット・プロデューサの登録方法およびページへのポートレットの追加方法の詳細は、第62章「ポートレットの消費」を参照してください。

- ページレット。Oracle WebCenter Portalのページレット・プロデューサは、動的ページレットの開発を容易にする有用なツールと機能のコレクションを提供します。ページレット・プロデューサを使用したページレットの開発および構成の詳細は、第65章「Oracle WebCenter Portalのページレット・プロデューサを使用したページレットの作成」を参照してください。

- タスク・フロー。JDeveloperでタスク・フローを作成すると、実行時に、JARファイルのそれらのタスク・フローをページに追加できます。ADFのタスク・フローの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

- ドキュメント。アプリケーションにドキュメント・サービスを構成すると、このサービスからドキュメントを追加できます。ドキュメント・サービスの詳細は、第29章「ドキュメント・サービスの統合」を参照してください。

- データ・コントロール。WebCenter Portalのサービスには、Frameworkアプリケーションやタスク・フローでカスタマイズしたユーザー・インタフェースを作成するためのデータ・コントロールを提供するものがあります。各サービスのドキュメントには、そのサービスのデータ・コントロールについての詳細な情報が記載されています。『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

2.3.6 アプリケーションのセキュリティ

Oracle WebCenter Portalに付属のOracle ADF拡張機能を使用すると、アプリケーション全体、ページ階層、ページ階層の一部分、ナビゲーション・コンポーネント、または単一のページにセキュリティを定義できます。カスタマイズ可能なコンポーネントで提供される個別のアクションに、セキュリティを定義できます。さらに、Webサービスを使用してバックエンド・サーバーに接続するOracle WebCenter Portal: Servicesに対しては、WS-Securityによるセキュアなアイデンティティ伝播を提供できます。

Oracle WebCenter PortalセキュリティはJAASおよびJ2EE標準に基づいているため、Frameworkアプリケーションを保護する際に既存のアイデンティティ管理ストアで定義されるエンタープライズ・ロールを直接利用できます。構築するアプリケーション内でロールを同期する必要はありません。定義されたユーザーとロールを直接参照して使用します。また、アプリケーションの開発フェーズでファイルベースのセキュリティを使用でき、デプロイ時に企業のID管理に簡単にスイッチオーバーできます。

Oracle WebCenter Portalには、アプリケーションのポリシーを表すために使用できる、アプリケーション・ロールも用意されています。ポリシー・ストアで定義されたアプリケーション・ロールに権限を関連付けることにより、その権限をアプリケーション内に保持しておくことができます。デプロイメント時には、ユーザーとエンタープライズ・ロールをアプリケーション・ロールに関連付けると、それらの権限をエンド・ユーザーに付与できます。

場合によっては、独自の認証メカニズム(電子メールなど)を備えた既存のアプリケーションを利用するほうが適していることもあります。電子メール・システムは、多くの場合、新しいアプリケーションとは別の認証システム(別のユーザー名とパスワード)を使用します。そのアプリケーションでは、電子メール・ユーザーをアプリケーション・ユーザーにマップして、エンド・ユーザーが情報を要求するたびにユーザー名とパスワードを入力する必要がなくなるようにします。Oracle WebCenter Portal: Frameworkには、このようなユーザー名とパスワードを、外部アプリケーション機能でセキュアに管理する方法が用意されています。

Frameworkアプリケーションを保護するオプションの詳細は、第68章「WebCenter Portal: Frameworkアプリケーションの保護」を参照してください。

2.4 Oracle WebCenter Portal: Servicesの概要

Oracle WebCenter Portal: Servicesは、サービスを通じてソーシャル・ネットワーキング機能と個人の生産性機能を公開し、タスク・フローを通じて、それぞれの機能のサブセットを公開します。

表2-1に、使用可能な各サービスを示します。

表2-1 Oracle WebCenter Portal: Services

サービス

説明

章

アクティビティ・グラフ

集約的なインテリジェンスを活用し、検索アプリケーションおよびソーシャル・アプリケーションに役立てます。

第45章「アクティビティ・グラフ・サービスの統合」

分析

Frameworkアプリケーションの使用状況とパフォーマンスのメトリックを表示できます。

第46章「分析サービスの統合」

お知らせ

認証されているすべてのユーザーに重要なアクティビティとインベントについてのお知らせを投稿する機能を提供します。

第32章「お知らせサービスの統合」

ブログ

アプリケーションのコンテキストにブログ・アプリケーションを簡単に統合できるようにします。

第31章「Wikiとブログの統合」

ディスカッション

スレッド化されたディスカッションを作成し、質問の提示と応答、回答の検索を行う機能を提供します。重要なアクティビティやイベントに関して、グループが効果的に通信するためのメカニズムも提供します。

第33章「ディスカッション・サービスの統合」

ドキュメント

コンテンツ管理機能および記憶域機能を提供します。この機能には、コンテンツのアップロード、ファイルやフォルダの作成および管理、ファイルのチェックアウト、バージョニングなどが含まれます。

第29章「ドキュメント・サービスの統合」

イベント

より大きなユーザーのグループに関連するイベントのスケジュールを作成および保守する機能を提供します。イベントは、認証されたすべてのユーザーに公開されます。

『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のイベント・サービスの使用に関する項

第51章「イベント・サービスの統合」

インスタント・メッセージおよびプレゼンス(IMP)

他の認証ユーザーのステータス(オンライン、オフライン、ビジーまたは退席中)を確認し、そのユーザーとすぐに連絡を取る機能を提供します。

第34章「インスタント・メッセージおよびプレゼンス・サービスの統合」

リンク

関連情報の表示、アクセス、および関連付けの機能を提供します。たとえば、ディスカッション・スレッドから解決策のドキュメントへのリンクを作成できます。

第42章「リンク・サービスの統合」

リスト

リストを作成、公開および管理する機能を提供します。ユーザーは、作成済の構造からリストを作成することも、独自のカスタム・リストを作成することもできます。

『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリスト・サービスの使用に関する項

第47章「リスト・サービスの統合」

メール

IMAPおよびSMTPのメール・サーバーと簡単に統合できます。この統合により、ユーザーは、メッセージの確認、添付ファイル付きメッセージの作成、既存のメッセージへの返信または転送、メッセージの削除など、簡単なメール機能を実行できます。

第35章「メール・サービスの統合」

ノート

短いメモを記入したり、個人的に必要な情報の断片を維持する機能を提供します。

注意: このサービスは、Oracle WebCenter Portal: Spacesでのみ使用できます。

『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のノート・サービスの使用に関する項

通知

サービス・オブジェクトおよびアプリケーション・オブジェクトへのサブスクライブの手段と、これらのオブジェクトが変更されたときに、1つ以上の選択済メッセージ・チャネルを通じて通知を受信する手段を提供します。

第48章「通知の統合」

ピープル・コネクション

ソーシャル・ネットワーキング機能を提供します。個人プロファイルの作成、現在のステータスの表示、他のユーザーの最近のアクティビティの確認などの機能があります。

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

投票

関係者にアンケート(意見や経験レベルなど)を実施したり、重要な情報を覚えているかどうかを確認したり、フィードバックを集めたりできます。

第36章「投票サービスの統合」

パーソナライズ

自分のアプリケーション内のコンテンツを、選択した条件に基づいて対象となるアプリケーション・ユーザーに配信できます。

第66章「WebCenter Portalアプリケーションのパーソナライズ」

最近のアクティビティ

最近変更したドキュメント、ディスカッションおよびお知らせのサマリー・ビューを提供します。

第49章「最近のアクティビティ・サービスの統合」

RSS

様々なWebサイトのコンテンツに1つの場所(ニュース・リーダー)からアクセスする機能を提供します。

第52章「RSSサービスの統合」

検索

サービス、アプリケーション、またはサイト全体を検索する機能を提供します(これには、WebCenter Portal検索のためのOracle Secure Enterprise Searchの統合も含まれます)。

第44章「検索サービスの統合」

タグ

個人的に関連する1つ以上のキーワードを、特定のページまたはドキュメントに割り当てる機能を提供します。

第43章「タグ・サービスの統合」

Wiki

様々な地域にいるチームがWebドキュメントを起点にしたりWebドキュメントでコラボレートできる機能を提供します。

第31章「Wikiとブログの統合」

ワークリスト

注目が必要なビジネス・プロセスを、個人用の一覧ビューにまとめて表示できるようになります(ドキュメント・レビューのリクエストや、エンタープライズ・アプリケーションから直接発生するその他のタイプのビジネス・プロセスが含まれます)。

第50章「ワークリスト・サービスの統合」

WebCenterは、これらのサービスにおけるタスク・フローをOracle WebCenter Portal: Servicesカタログを通じて提供します。これらのタスク・フローを利用するようアプリケーションを準備する方法の詳細は、第7章「WebCenter Portal Services用アプリケーションの準備」を参照してください。

Oracle WebCenter Portal: Servicesを相互に統合する方法

WebCenter Portal: Servicesは、相互に統合されるように設計されています。次に、WebCenter Portal: Servicesを連動させる方法の例をいくつか示します。

- 検索サービスは、アプリケーション内の任意のWebCenter Portalサービスを検索するように設計されています。たとえば、アプリケーションにドキュメント・サービスが含まれている場合は、検索操作により、ドキュメント名とドキュメント自体に含まれる語句が検索されます。この結果には、タグの一致が含まれるため、ドキュメントやページで一致するタグもタグの品質と頻度に基づいた関連性とともに返されます。

- リンク・サービスを使用すると、各サービス全体で関連する情報の表示、アクセスおよび関連付けが可能になります。たとえば、ディスカッション・フォーラムでは、関連するディスカッション・フォーラム、ドキュメント、URLまたはイベントへのリンクを作成できます。リンク・サービスは、ディスカッション・トピックからドキュメントに移動して、そこから元のディスカッション・トピックに戻るような、オブジェクト間の双方向リンクもサポートしています。

- プレゼンス・アイコンは、ユーザーが表示される任意のWebCenter Portalサービスに表示できます。たとえば、ドキュメントに記載された作成者の名前をクリックすると、ポップアップ・メニューが表示され、その人物にインスタント・メッセージやメールを送信できます。

- 最近のアクティビティ・サービスを使用すると、お知らせ、ドキュメント、ディスカッションおよびページに対する最新の追加や変更をアプリケーションで確認できます。

2.4.1 WebCenter Portal: ServicesおよびREST API

多くのWebCenter Portalサービスには、それらのREST APIによりアクセスできます。REST APIを使用すると、豊富な対話型のクライアント側アプリケーションを作成できます。RESTコマンドでは、リクエストとして標準HTTPメソッドを使用して、使用するリソースを指定します。すべてのリクエストは、操作のステータスを含むレスポンスを返します。リクエストによりオブジェクトが取得、作成または更新されると、レスポンスにはそのオブジェクトの標準表現が格納されます。

REST APIを含むサービスの一覧と詳細は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

2.5 Oracle Application Development Framework (Oracle ADF)の概要

この項では、Oracle ADFについて簡単に紹介し、WebCenter PortalがOracle ADFテクノロジから得られるメリットについて説明します。

2.5.1 Oracle ADFとは

Oracle Application Development Framework (Oracle ADF)は、サービス指向アプリケーションの実装を簡易化し促進するために、Javaプラットフォーム、Java Enterprise Edition (Java EE)標準およびオープンソース・テクノロジの上に構築されたエンドツーエンドのアプリケーション・フレームワークです。Oracle JDeveloperとOracle ADFを併用すると、ドラッグ・アンド・ドロップによるデータ・バインド、視覚的なUI設計およびチーム開発機能が組み込まれた、設計からデプロイメントまでの開発ライフ・サイクル全体をカバーする環境が得られます。

2.5.2 WebCenter Portal開発者にとってOracle ADFが重要な理由

各種テクノロジやアプローチを使用してポータルを構築でき、WebCenterは、ポータル構築に対して様々なオープン業界標準をサポートします。Oracle ADFには、WebCenter Portal開発のための強固な基盤が用意されています。これにより、Oracle Fusion Middlewareスタック全体への統合が可能になります。Oracle WebCenter Portalでは、スタックの残りの部分で提供される機能を利用して、このアーキテクチャ全体にプラグインするポータルを構築できます。

2.5.3 Oracle ADFテクノロジの内容

Oracle ADFでは、標準JSFコンポーネントのセットを使用しますが、このコンポーネントには組込みのAjax機能があります。Ajaxとは、非同期のJavaScript、ダイナミックHTML (DHTML)およびXMLを組み合せたものです。この組合せにより、ページ全体を完全に再レンダリングすることなく、サーバーにリクエストを送信できるようになります。Ajaxによってリッチ・クライアントのようなアプリケーションで標準インターネット・テクノロジを使用できるようにして、JSFによってサーバー側の制御を実現します。

Oracle ADFには、150を超えるリッチ・コンポーネントが含まれています。これには、階層形式のデータ表、ツリー・メニュー、ページ内ダイアログ、アコーディオン、デバイダ、ソート可能な表などがあります。また、Oracle ADFにはデータ視覚化コンポーネントも用意されています。これはFlashやSVGに対応したコンポーネントであり、動的チャート、グラフ、ゲージなどのグラフィックをレンダリングし、基礎となるデータをリアルタイムで表示できます。各コンポーネントは、国際化およびアクセシビリティのサポートおよびスキニングも提供しています。

ADFタスク・フローは、アプリケーション開発でユーザーが把握して使用する重要なコンポーネントを表します。これらは、アプリケーションでコントロール・フローを定義するためのモジュール式アプローチを提供します。アプリケーションを1つの大きなJSFページフローとして表すかわりに、再利用可能なタスクフローの集合として分類することができます。各タスク・フローでは、アプリケーションが完了するために実行する必要があるアプリケーション・アクティビティ(作業ユニット)を識別します。アクティビティとは、タスク・フローの実行時に行うことができる作業を意味しています。タスク・フローには、アプリケーションとともにパッケージ化およびデプロイできるという利点もあります。リモート・ポートレットのように個別のデプロイメントは必要ありません。タスク・フローの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

2.6 Oracle JDeveloperおよびWebCenter Portal拡張機能の概要

Oracle JDeveloperは、Java、XML、Webサービス、ポートレットおよびSQLの最新の業界標準を使用してサービス指向のアプリケーションを作成するための統合開発環境(IDE)です。JDeveloperは、アプリケーションのモデリング、コーディング、デバッグ、テスト、プロファイリング、チューニングおよびデプロイの統合された機能により、ソフトウェア開発のライフ・サイクル全体をサポートします。JDeveloperの視覚的および宣言型のアプローチとOracle ADFは、アプリケーション開発を単純化して、日常的なコーディング・タスクを削減できます。たとえば、多くの標準的なユーザー・インタフェース・ウィジェット(ボタン、値のリスト、ナビゲーション・バーなど)のコードは、事前にパッケージ化されています。適切なウィジェットをコンポーネント・パレットから選択して、そのウィジェットをアプリケーションにドロップするだけです。

WebCenter PortalのOracle JDeveloper用拡張機能には、Frameworkアプリケーションを作成するために必要なすべての開発機能が含まれています。Oracle WebCenter Portalのコンポーネントは、リソースのカタログからすぐに利用できます。

図2-2 Oracle JDeveloperおよびWebCenter Portal拡張機能

「図2-2 Oracle JDeveloperおよびWebCenter Portal拡張機能」の説明

WebCenter Portal拡張機能は、ポートレットの構築、既存のポートレットの消費、コンテンツ・リポジトリへのデータ・コントロールの作成、およびアプリケーションの保護といった不可欠な開発タスクに役立つ複数のウィザードも備えています。JDeveloperおよびWebCenter Portal拡張機能では、実行するコーディングの量を大幅に減らすことで、開発者として生産性を劇的に増加させます。

JDeveloperでは、アプリケーション・テンプレートを適用することが、アプリケーションおよびそのプロジェクトを適切なテクノロジ・スコープで適切に定義するための最も簡単な方法になります。アプリケーション・テンプレートにより、アプリケーションは、処理全体の論理的な区分を反映するプロジェクト単位に自動的に分割されます。WebCenter Portal拡張機能には、Frameworkアプリケーションを作成するために最適に構成された2つのテンプレートが用意されています。

- WebCenter Portal - Frameworkアプリケーション・テンプレート。データ・コントロールの作成とポートレットおよびWeb 2.0サービスの利用に合せて最適化されたプロジェクトとライブラリがアプリケーションに事前移入されます。サイト・ナビゲーション、ページ階層、委任管理、ページ・テンプレートなど、Oracle WebCenter Portal: Framework機能が含まれています。

- 「WebCenter Portal - ポートレット・プロデューサ・アプリケーション」テンプレート。ポートレットの作成に合せたプロジェクトとライブラリがアプリケーションに事前移入されます。

テンプレートの使用は必須ではありません。必要に応じて、手動でアプリケーション・テクノロジをスコープ設定し、関連プロジェクトを作成することによって、独自のFrameworkアプリケーションおよびポートレット・アプリケーションを作成できます。詳細は、第3章「開発環境の準備」を参照してください。

JDeveloperの詳細は、JDeveloperの「開始ページ」にある多数の学習支援にアクセスしてください。このページは、JDeveloperの「ヘルプ」メニューからアクセスできます。

2.7 アプリケーション・ライフ・サイクルの理解

ポータルのライフ・サイクルとは、ポータルの開発から本稼働までの過程を表します。ライフ・サイクルのフェーズには、開発、テスト、ステージング、および本稼働が含まれます。ライフ・サイクルの詳細は、第9章「WebCenter Portalのライフ・サイクルの理解」を参照してください。

2.8 開始前に考慮する必要のある設計上の問題

Frameworkアプリケーションの設計時には、関係者のニーズを考慮に入れる必要があります。具体的には、Frameworkアプリケーションのエンド・ユーザー、管理者および開発者が求めている機能を考慮に入れることが重要です。Frameworkアプリケーションを実際に作成する前に、次の質問事項に目を通し、その回答をアプリケーションの計画に役立ててください。

この項には次のサブセクションが含まれます:

- 第2.8.1項「ユーザーに関する考慮事項」

- 第2.8.2項「サイト管理者に関する考慮事項」

- 第2.8.3項「開発者に関する考慮事項」

2.8.1 ユーザーに関する考慮事項

次に示すリストは、Frameworkアプリケーションのエンド・ユーザーに関して尋ねる必要のある質問を示しています。

- ユーザーは何人いますか?Frameworkアプリケーションで多数のユーザーに対応する必要がある場合、デプロイ環境を定義する際にそのことを考慮する必要があります。つまり、Frameworkアプリケーションへのアクセスが予想されるユーザー数に対応できるトポロジを選択して、様々なサービスの構成パラメータを適宜設定する必要があります。
Frameworkアプリケーションに最適なOracle Application Server構成を決定するには、Oracle Fusion Middleware Enterprise Oracle WebCenter Portalデプロイメント・ガイドを参照してください。

- ユーザーは、リソースの追加によって、ページを編集したり、エンタープライズ・マッシュアップを作成する必要があるか。ユーザーがページを編集できるようにする場合は、Oracle WebCenter Portalのコンポーザ・コンポーネントをアプリケーションに追加する必要があります。ユーザーが編集できる箇所や使用できるリソースなどについても検討する必要があります。
アプリケーションの設計時、コンポーザ・コンポーネントを挿入して編集可能にするページの領域を選択する必要があります。ユーザーがページに追加できるようにするコンポーネントは、実行時にリソース・カタログに表示されている必要があります。複数のカタログを用意して、アプリケーション・コンテキストやユーザーの権限に応じて利用できるようにすることも可能です。

ページ編集を許可するように選択する場合、アプリケーションで、カスタマイズと特定のユーザーを関連付けられるようにする必要があります。つまり、アプリケーションのユーザーに一部の認証フォームが必要になります。さらに、ユーザーのカスタマイズがメタデータ記憶域(MDS)に格納されるため、使用するデプロイメント・システムが、カスタマイズを格納して取得するためにMDSにアクセスできるようにする必要があります。

コンポーザおよびリソース・カタログの公開の詳細は、第19章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

- ユーザーがポートレットをカスタマイズする必要があるか。ポートレットには、認証されたユーザーが実行時にポートレットをカスタマイズできる、カスタマイズ・モード(「編集」モード)を必要に応じて組み込むことができます。「編集」モードでは、ポートレットのコンテンツに影響する項目(ポートレットのタイトルやパラメータなど)をユーザーが入力できます。たとえば、ユーザーが株式ポートレットに対してティッカ・シンボルを入力できるような「編集」モードを実装できます。ユーザーの変更内容が適用されると、ポートレットには、選択されたティッカ・シンボルの価格が表示されます。
カスタマイズの実装を決定した場合は、ポートレットを利用するアプリケーションに、なんらかのセキュリティを実装することも必要になります。認証および認可されたユーザーのみが、アプリケーションをカスタマイズできます。

ポートレットのカスタマイズを検討する場合は、ポートレットの負荷を分散するかどうかについても検討する必要があります。負荷分散する場合は、データベース・サポートされたカスタマイズを使用し、すべての中間層でユーザーのカスタマイズ・データにアクセスできるようにする必要があります。このようにしていないと、ユーザーは同じポートレットを何回もパーソナライズすることになります。

詳細は、第57章「ポートレットの概要」を参照してください。

- ユーザーがアクセスする必要のあるサービスはどれか。WebCenterは、ドキュメント、ディスカッション、検索、ピープル・コネクション、インスタント・メッセージ、プレゼンスなどの多様なサービスを提供します。これらのサービスのうち、ユーザーに必要なサービスを判断して構成する必要があります。必要なサービスをインストールして構成した後で、そのサービスにアクセスするアプリケーション・ページにタスク・フローを追加できます。どのサービスを実装するかが、トポロジの選択にも影響することがあります。たとえば、WebCenter Portalのディスカッション・サーバーとコンテンツ・リポジトリを異なるシステムに配置できますが、アプリケーションは、そのどちらにもアクセスできる必要があります。
詳細は、表2-1「Oracle WebCenter Portal: Services」および第7章「WebCenter Portal Services用アプリケーションの準備」を参照してください。

- 認証されたユーザーと認証されていない(パブリック)ユーザーのどちらも存在する予定ですか?一部のWebCenter Portalサービスでは、認証されていないユーザーに対して機能が制限されます。たとえば、認証されていないユーザーはディスカッションを表示できますが投稿することはできません。RESTサービス(その大部分)は、認証されたユーザーのみが使用できます。この機能がないため、認証されていないユーザー向けに設計される特別なパブリック・ページを作成する方が適している場合があります。
ポータル・ページ階層エディタを使用すると、個別のページまたは複数のページに委任管理のセキュリティ・ポリシーを設定できます。詳細は、第8.5.2項「ポータルのページの保護」を参照してください。

2.8.2 サイト管理者に関する考慮事項

次に示すリストは、アプリケーションの管理者に関して尋ねる必要のある質問を示しています。

注意:

アプリケーションの作成中は、Frameworkアプリケーションの管理者と開発者が意思疎通を図ることが非常に重要です。設計時、開発者は、管理者が実行時にアプリケーションに対して実行できる操作を決定するために、多くの選択を行う必要があります。たとえば、開発者がスキンを実装しないことを決定すると、管理者はアプリケーションのルック・アンド・フィールを制御できなくなります。このため、管理者と開発者は、これらの決定事項を設計時に協議しておく必要があります。

- 管理者がユーザーまたはユーザー・グループのページおよびポートレットをカスタマイズする必要があるか。Frameworkアプリケーションの管理者がページやポートレットをカスタマイズしてユーザーにFrameworkアプリケーションのデフォルト・ビューを提供できるように設定することもできます。

- Frameworkアプリケーションのルック・アンド・フィール。Frameworkアプリケーションにスキンを実装すると、管理者はアプリケーション内のページの外観を選択できます。
スキンの実装方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』の第19章「スタイルおよびスキンを使用した外観のカスタマイズ」、および第14章「スキンの作成および管理」を参照してください。

- カスタマイズ可能ページ。管理者はページのレイアウトをカスタマイズできます。
カスタマイズ可能なコンポーネントの詳細は、第19章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

- ポートレット。オプションで、管理者がポートレットをカスタマイズできるカスタマイズ・モード(「デフォルトの編集」モード)をポートレットに組み込むことができます。管理者がカスタマイズした内容は、他のすべてのユーザーのポートレットのデフォルト・ビューとして処理されます。
ポートレットの詳細は、第57章「ポートレットの概要」を参照してください。

2.8.3 開発者に関する考慮事項

次に示すリストは、アプリケーションに関与する開発者に関して尋ねる必要のある質問を示しています。

- 開発者と管理者は、Oracle WebCenter Portal: Frameworkの機能をアプリケーションで使用するか。一般に、開発者は、Frameworkアプリケーションの作成にFrameworkアプリケーション・テンプレートを使用することを検討します。このテンプレートを使用すると、正しいFrameworkのテクノロジ・スコープと機能で新しいアプリケーションが適切にプロビジョニングされます。このようなポータル固有の機能には、ページ階層、委任管理、ナビゲーション・モデル、ページ・テンプレートなどが含まれます。さらに、実行時管理ツールを使用すると、権限のあるユーザーは、これらのポータル機能を変更することもできます。詳細は、第8章「Frameworkアプリケーションの理解」を参照してください。

- 開発者は、タスク・フローまたはポートレットを再利用可能なコンポーネントとして構築するか。Oracle JSF Portlet Bridgeを使用すると、開発者は、タスク・フローをJSR 286のポートレットにできます。そのため、再利用可能なコンポーネントを、ブリッジによってJSR 286ポートレットにできるタスク・フローとして作成するか、直接JSR 286ポートレットとして作成するかを選択できます。コンポーネントの主な用途が1つ以上のポータルへの埋込みの場合、開発者はブリッジを使用せず、そのコンポーネントをJSR 286ポートレットとして直接作成します。コンポーネントの主な用途がJSFアプリケーションでのローカル実行の場合、開発者はタスク・フローとしてコンポーネントを作成してから、必要に応じてブリッジを使用して、そのコンポーネントをJSR 286ポートレットとして実行します。タスク・フローを作成することで、そのコンポーネントは、最初にポートレットとして再パッケージ化する必要なく、他のADFアプリケーションで使用できるようになります。

- 開発者がコンテンツ・リポジトリ(Content Server、ファイル・システム、Oracle Portalなど)からのコンテンツを統合する必要があるか。Frameworkアプリケーション内に公開するコンテンツがコンテンツ・リポジトリ内にある場合、JCRアダプタおよびデータ・コントロールを使用する必要があります。
JCRデータ・コントロールおよびアダプタを使用してコンテンツを組み込む方法の詳細は、第26章「コンテンツ・リポジトリ接続の管理」を参照してください。

- WebCenter Portal: Frameworkアプリケーションの表示可能/編集可能コンテンツを、ユーザーのアイデンティティに応じて変更するか。一部のユーザーを対象にするコンテンツをFrameworkアプリケーション内に含める場合は、ログインおよびユーザー・ロールを使用したセキュリティ・モデルを設定して、アクセスを制御できるようにする必要があります。ユーザーのアイデンティティに応じて、コンポーネント、ポートレットおよびページの表示と非表示を切り替えることができます。コンテンツをすべてのユーザーに公開する場合(たとえば、すべての従業員が使用するコンテンツを持つ人事管理Frameworkアプリケーションなど)は、アクセス制御を実装する必要はありません。Oracle WebCenter Portal: Frameworkのページ階層機能を使用すると、ページ階層内の個別のページまたは複数のページにセキュリティ・ポリシーを設定できます。詳細は、第8.5.2項「ポータルのページの保護」を参照してください。
さらに、コンポーザを使用すると、ユーザーは、アプリケーション内でコンテンツを編集できます。繰り返しになりますが、特定のユーザーに該当の機能を制限するかどうかを考慮する必要があります。考慮する場合、その機能をセキュリティ・モデルに組み込む必要があります。

Frameworkアプリケーションのセキュリティ・モデルを実装する方法の詳細は、第68章「WebCenter Portal: Frameworkアプリケーションの保護」を参照してください。

- WebCenter Portal: Frameworkアプリケーションで外部アプリケーションへのアクセスを提供する必要があるか。Frameworkアプリケーション内に外部アプリケーションを表面化する必要があることもしばしばあります。たとえば、ユーザーがアプリケーション内から電子メール・アプリケーション、人事管理アプリケーションまたは財務アプリケーションを表示できるようにする場合などです。ユーザーにシームレスな対話を提供するには、ある種の外部アプリケーション資格証明ストアを用意する必要があります。
Frameworkアプリケーションから外部アプリケーションにアクセスする方法の詳細は、第68章「WebCenter Portal: Frameworkアプリケーションの保護」を参照してください。

Oracle Portalに構築された従来の外部アプリケーション・ポートレットがある場合、それらのポートレットをFrameworkアプリケーションで再利用できます。この機能を使用すると、ユーザーは、各アプリケーションを個別に開いたりOracle Portalに戻らずに、Frameworkアプリケーションからこれらのポートレットを表示できます。このようなポートレットを構築する場合、データを取得して表示する前に、ポートレットが通常それ自体を外部アプリケーションに対して認証する必要があることに注意してください。前述のように、このような認証では資格証明ボールトが必要です。この場合、Frameworkアプリケーションは外部アプリケーションへのログインに必要な資格証明を格納できます。Oracle WebCenter Portal: Frameworkでは、外部アプリケーションに基づいてポートレットを組み込むための選択肢をOracle JDeveloperで用意しています。

外部アプリケーション・ポートレットの詳細は、第68.13.3項「外部アプリケーションの管理」を参照してください。

- 開発者のチームでWebCenter Portal: Frameworkプリケーションを開発するか。Frameworkアプリケーションをチームで開発する場合は、追加の設計上の考慮事項について検討する必要があります。たとえば、チーム開発を実行する場合、JDeveloperの各種アクションでアクセスするファイルに十分注意する必要があり、コード管理システムを統合するJDeveloperの機能を利用することもあります。
チーム開発の詳細は、第4章「チームでの効率的な作業」を参照してください。また、第1章「開発者向けクイック・スタート・ガイド」も参照してください。

2.9 WebCenterアクセシビリティ機能の概要

アクセシビリティとは、視覚や聴覚など、身体的に制限のあるユーザーがアプリケーションを使用できるようにすることです。わかりやすく表現すると、マウスなしで(キーボードのみで)使用できるアプリケーション、視覚障害者に向けたスクリーン・リーダーを使用できるアプリケーション、さらに音声、色彩、またはアニメーションやタイミングに頼らないアプリケーションを作成するということです。

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のアクセシビリティ」ノードを選択すると表示される、ヘルプ・トピックを参照してください。

2.9.1 アクセス可能なHTMLの生成

WebCenter Portalには、アプリケーション・ページに追加することで、実行時にページを編集できるようにする、いくつかのコンポーザ・コンポーネントが用意されています。これらのコンポーネントには、アクセス可能なHTMLを生成するために使用する属性があります。作成するページをアクセス可能にするには、表2-2に示す属性を設定する必要があります。

表2-2 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属性に変換されます。

2.9.2 実行時のアクセシビリティ機能

ユーザーが実行時にページをカスタマイズできるようにする場合、すべてのユーザーがどのカスタマイズにもアクセスできるようにしておく必要があります。ユーザーが実行時に作成できるすべてのコンポーネントでは、アクセシビリティ関連のすべての属性がプロパティ・インスペクタに表示され、ここでユーザーは属性を適宜設定できます。

WebCenter Portal固有のコンポーネントに対するアクセシビリティ関連の属性のリストは、表2-2を参照してください。その他のコンポーネントのアクセシビリティ関連の属性のリストは、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のアクセス可能なADF Facesコンポーネントおよびページの開発に関する項を参照してください。

2.9.3 ポートレットのアクセシビリティの考慮事項

IFrameは、現在のスクリーン・リーダーでは十分に対応していないため、一部のアクセシビリティ標準では許可されていません。

注意:

Oracle JSF Portlet Bridgeを使用して作成されたポートレットは、JavaScriptの問題により直接Oracle ADFページにレンダリングするには複雑すぎるため、requireIFrameコンテナ実行時オプションはtrueに設定されます。

WebCenter Portalでは、renderPortletInIFrameという名前のadf:portletタグで、オプションの属性を提供しています。この属性にfalseを設定すると、IFrameが使用できないようになります。詳細は、第62.6.4項「インライン・フレームに関する必知事項」を参照してください。

3 開発環境の準備

この章では、開発環境を設定するために実行する必要があるタスクについて説明します。

ヒント:

開始したばかりの場合は、まず、第1.1項「WebCenter Portal開発者向けFAQ」を参照することをお薦めします。

この章には次の項が含まれます:

- 第3.1項「Oracle JDeveloperのインストール」

- 第3.2項「WebCenter PortalのOracle JDeveloper用拡張機能のインストール」

- 第3.3項「ユーザー・ホーム・ディレクトリ環境変数の設定」

- 第3.4項「統合WebLogic Serverの使用」

- 第3.5項「データベース・スキーマのインストール」

- 第3.6項「SharePoint用Oracle WebCenterアダプタのインストール」

3.1 Oracle JDeveloperのインストール

Oracle JDeveloperは、WebCenter Portal: Frameworkアプリケーションの開発のために、統合された開発環境を提供します。Oracle JDeveloperの取得およびインストールの詳細は、次に示すOTNのOracle JDeveloperに関するページを参照してください。

http://www.oracle.com/technetwork/developer-tools/jdev/overview/index.html

3.2 WebCenter PortalのOracle JDeveloper用拡張機能のインストール

Frameworkアプリケーションの開発を開始する前に、WebCenter PortalのOracle JDeveloper用拡張機能をインストールする必要があります。WebCenter Portalの拡張機能は、JDeveloper Studio EditionにWebCenter機能の完全セットを提供するJDeveloperのアドインです。

WebCenter Portalの拡張機能をインストールするには:

1. Oracle JDeveloperを起動します。

2. 「デフォルトのロールの選択」ダイアログが表示される場合は、「デフォルトのロール」を選択してすべてのテクノロジを有効にし、「OK」をクリックします。

3. 以前のバージョンから設定を移行するかどうかを尋ねるダイアログが開く場合は、「いいえ」をクリックします。

4. 「ヘルプ」メニューから「更新のチェック」を選択します。

5. 更新のチェック・ウィザードの「ようこそ」ページで、「次へ」をクリックします。

6. 「ソース」ページの「更新センターの検索」で、WebCenter Portalの拡張機能を検索して選択し、「終了」をクリックします。

7. 要求されたら、JDeveloperを再起動します。

これでJDeveloperは、WebCenter Portal: Frameworkアプリケーションおよびポートレット・プロデューサ・アプリケーションを作成するように構成されます。

Oracle WebCenter Portal: Frameworkの取得およびインストールの詳細は、次に示すOTNのOracle WebCenter Portalに関するページを参照してください。

http://webcenter.oracle.com

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

JDeveloperで参照するユーザー・ホーム・ディレクトリの環境変数を設定することを強くお薦めします。この変数を設定することで、状況次第で発生することが確認されている、長いパス名のエラーを受け取らずに済みます。

この変数の、Windows、Linux、UNIXおよびMac OS Xオペレーティング・システムでの設定の詳細は、『Oracle Fusion Middleware Oracle JDeveloperインストレーション・ガイド』のユーザー・ホーム・ディレクトリの設定に関する項を参照してください。

3.4 統合WebLogic Serverの使用

Oracle WebCenter Portal: Frameworkをインストールすると、JDeveloper内の統合WebLogic Server (WLS)ドメインが再構成され、ライブラリや複数の事前構築ポートレットが追加されます。この項では、統合WLSについて(起動方法や停止方法を含めて)説明し、事前構成済のポートレット・プロデューサの一部と、それにより提供される事前構築済のポートレットについて説明します。次のサブセクションが含まれます:

- 第3.4.1項「統合WLSの起動方法と停止方法」

- 第3.4.2項「統合WLSに関する必知事項」

- 第3.4.3項「WebCenter事前構成サーバーのReadmeファイル」

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

3.4.1 統合WLSの起動方法と停止方法

統合WLSを起動するためのオプションは、Oracle JDeveloperの「実行」メニューで使用できます。

- 統合WLSをデバッグ・モードで起動するには、「実行」メニューで「サーバー・インスタンスのデバッグ」を選択します。
サービスをデバッグ・モードで実行すると、サービスのデバッグに役立ちます。

- 統合WLSを標準モードで起動するには、「実行」メニューで「サーバー・インスタンスの起動」を選択します。

統合WLSが実行中かどうかを判断したり、停止する方法はいくつかあります。

- 「終了」メニューには、実行中のサーバーおよびデプロイ済アプリケーション(ある場合)の一覧が表示されます。(図3-1)。サーバーを停止(またはアプリケーションをアンデプロイ)するには、このメニューから選択します。

図3-1 「終了」メニューでの実行されているものの表示

「図3-1 「終了」メニューでの実行されているものの表示」の説明

- 「実行」メニューで「終了」を選択し、停止するサーバーを選択します。

- ブラウザから統合WLSのコンソールにアクセスします。

http://localhost:7101/console

注意:

WebLogic Serverはアクセスできない状態になることがあります(シャットダウンが正常終了する前に、ユーザーがWebLogic Serverの再起動を試みた場合など)。この場合は、Javaプロセスを手動でシャットダウンまたは停止してください。

3.4.2 統合WLSに関する必知事項

統合WebLogic Server(統合WLS)は事前構成済のWebLogic Serverであり、完全なJava 2 Enterprise Edition (Java EE) 1.4準拠の環境が提供されます。これはすべてJavaで記述されており、標準Java Development Kit (JDK)のJava仮想マシン(JVM)で実行されます。WebLogic Serverは、オペレーティング・システムに用意されている標準JDKでも、Oracle JDeveloperに用意されているJDKでも実行できます。

統合WLSは、Oracle JDeveloperからアプリケーション・サーバー接続を確立することで、Frameworkアプリケーションのデプロイをローカル・コンピュータ上で事前テストするためのプラットフォームとして使用できます。統合WLSでアプリケーションを実行すると、実際にそのアプリケーションは、アプリケーション・サーバーのWebLogic Serverインスタンスにデプロイしているようにデプロイされます。統合WLSの詳細は、第69.3項「WebLogic管理対象サーバーへのFrameworkアプリケーションのデプロイ」を参照してください。

注意:

次の場所にあるsetDomainEnv.shスクリプトで、Java仮想マシン(JVM)の設定を、統合WLSで実行するFrameworkアプリケーション用に指定できます。

JDEV_SYSTEM_DIRECTORY/DefaultDomain/bin/

デフォルトのメモリー値は、次のとおりです。

-Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m

JDEV_SYSTEM_DIRECTORYを作成または参照する場合、Windowsプラットフォームでは、WebCenterのドメイン名に空白を含めたり、パスに空白が含まれるフォルダ内にドメインを作成することはできないことに注意してください。また、Oracle JDeveloperのシステム・ディレクトリへのパスに空白があると、Frameworkアプリケーションのページはレンダリングされません。したがって、DOMAIN_HOMEパスおよびJDEV_SYSTEM_DIRECTORYパスには、空白を含めないでください。

3.4.3 WebCenter事前構成サーバーのReadmeファイル

WebCenter事前構成サーバーのReadmeファイルには、統合WLSの使用方法に関する有用な情報が含まれています。また、事前構成ポートレット・プロデューサへのリンクも含まれています。Oracle JDeveloperの「ヘルプ」メニューでWebCenter事前構成サーバーのReadmeを選択すると、事前構成サーバーのReadmeファイルにアクセスできます。

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

WebCenter事前構成済サーバーには、アプリケーション・ページに追加できる、すぐに使用可能な様々なポートレットが用意されています。デフォルト・サーバーに含まれているプロデューサをFrameworkアプリケーションに登録し、Oracle JDeveloperの「アプリケーション・リソース」パネルからそのプロデューサのポートレットを選択するのみです。

この項では、事前構成プロデューサと、これらのプロデューサで提供されるポートレットの一部について簡単に説明します。次のサブセクションが含まれます:

- 第3.4.4.1項「OmniPortletおよびWebクリッピング」

- 第3.4.4.2項「WSRPのサンプル・ポートレット・プロデューサおよびポートレット」

- 第3.4.4.3項「PDK-Javaのサンプル・ポートレット・プロデューサおよびポートレット」

ポートレット・プロデューサの登録とページへのポートレットの追加の詳細は、第62章「ポートレットの消費」を参照してください。

3.4.4.1 OmniPortletおよびWebクリッピング

統合WLSには、実行時に設計のOmniPortletとWeb Clippingポートレットへのアクセスを提供する、PortalToolsが含まれています。「実行時に設計」とは、ポートレットがアプリケーション・ページ上に配置されてページが実行された後で、ユーザーがポートレット・コンテンツを定義するという意味です。

OmniPortletおよびWebクリッピング・ポートレットのプロデューサにアクセスするには:

1. 統合WLSを起動します(第3.4.1項を参照)。

2. 「ヘルプ」メニューからWebCenter事前構成サーバーのReadmeを選択します。

3. Readmeファイルで、見出し「Preconfigured Portlet Producers」に移動し、「PortalTools Portlet Producers」の下の「PortalTools Welcome Page」リンクをクリックします。
これによってPortalToolsの「ようこそ」ページが開きます。

4. PortalToolsの「ようこそ」ページで、「Webクリッピング・プロデューサ」リンク、OmniPortletプロデューサ・リンクまたは「サンプル・ポートレット・プロデューサ」リンクのURLをコピーして、Oracle PDK-Javaポートレット・プロデューサの登録ウィザードでプロデューサURLとして使用します。

注意:

ポートレット・プロデューサの登録の詳細は、第62章「ポートレットの消費」を参照してください。

プロデューサを登録すると、そのポートレットがOracle JDeveloperの「アプリケーション・リソース」パネルで使用可能になります。「アプリケーション・リソース」パネルの「接続」ノードで、プロデューサ名を選択してそのポートレットをリスト表示し、Frameworkアプリケーション・ページにポートレットをドラッグします。(ページへのポートレットの追加の詳細は、第62.6項「ページへのポートレットの追加」を参照してください。)

PortalToolsの「ようこそ」ページに、次のプロデューサURLが表示されます。

- 「Webクリッピング・プロデューサ」ではWebクリッピング・ポートレットが提供されます。これは、別のWebソースからのコンテンツの動的な再利用を可能にする、ブラウザベースの宣言型ツールです。ソースが変更されると、Webクリッピング・ポートレットのコンテンツも変更されます。Webクリッピング・ポートレットでは、Webブラウザを使用して、目的のコンテンツを含むWebページにナビゲートします。ポートレットを介してアクセスするWebクリッピング・スタジオを使用して、ターゲット・ページのビジュアル・レンダリングをドリルダウンし、目的のコンテンツを選択します。Webクリッピング・ポートレットの詳細は、第64章「Webクリッピングを使用したコンテンツ・ベースのポートレットの作成」を参照してください。

注意:

Webクリッピング・ポートレットは、リリース11g (11.1.1.7.0)では非推奨になっています。Oracle WebCenter Portalのページレット・プロデューサを使用してクリップ・ページレットを使用することを検討してください。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracle WebCenter Portalのページレット・プロデューサの管理に関する項を参照してください。

- OmniPortletプロデューサではOmniPortletが提供されます。これは宣言型のポートレット構築ツールで、このツールを使用すると、XMLファイル、複数値を特定文字で区切ったファイル(スプレッドシートなど)、Webサービス、データベース、WebページおよびSAPデータ・ソースを含めた多様なデータ・ソースに対してポートレットを構築できます。OmniPortletユーザーは、データに対して事前に作成されたレイアウトを選択することもできます。事前に作成されたレイアウトには、表、ニュース、箇条書き、フォーム、チャートまたはHTMLが含まれます。OmniPortletの詳細は、第63章「OmniPortletを使用したポートレットの作成」を参照してください。

- サンプル・ポートレット・プロデューサは、OmniPortletの機能を例証する際に有用です。サンプル・プロデューサはデモ用のため、実際のポートレット・インスタンスの作成には使用しないでください。

3.4.4.2 WSRPのサンプル・ポートレット・プロデューサおよびポートレット

統合WLSには、アプリケーションで使用できるサンプルのWSRPポートレット・プロデューサとポートレットが含まれています。

注意:

次のEARファイルに、サンプル・ポートレット用のソース・コードがあります。

JDEV_HOME/jdeveloper/webcenter/modules/oracle.portlet.server_11.1.1/wsrp-samples.ear

JDEV_HOMEは、マシンにJDeveloperをインストールした場所です。

WSRPサンプル・ポートレット・プロデューサにアクセスするには:

1. 統合WLSを起動します(第3.4.1項を参照)。

2. 「ヘルプ」メニューからWebCenter事前構成サーバーのReadmeを選択します。

3. Readmeファイルで、「Preconfigured Portlet Producers」という見出しに移動し、「WSRP Portlet Producers」の下の「WSRP Tools Portlet Producer」または「Sample Portlet Producer」のリンクをクリックします。
これらのリンクでは、異なるWSRPプロデューサ・テスト・ページが開きます。一方のページにはパラメータ・フォーム・ポートレットとパラメータ表示ポートレットがあり、もう一方はサンプル・ポートレットの各種WSRPプロデューサ用のページです。

4. WSRP v1 WSDLまたはWSRP v2 WSDLの、いずれかのWSRPプロデューサのWeb Services Description Language (WSDL) URLをコピーします。
WSRPプロデューサの登録ウィザードで、コピーしたリンクをプロデューサURLとして使用します。

注意:

ポートレット・プロデューサの登録の詳細は、第62章「ポートレットの消費」を参照してください。

ポートレット・プロデューサ接続の登録先に応じて、そのポートレットは「アプリケーション・リソース」または「リソース・パレット」に表示されます。ここから、各種ポートレットをFrameworkアプリケーション・ページにドラッグ・アンド・ドロップできます。

3.4.4.3 PDK-Javaのサンプル・ポートレット・プロデューサおよびポートレット

統合WLSには、アプリケーションで使用できるサンプルのPDK-Javaポートレット・プロデューサとポートレットが含まれています。PDK-Javaポートレットで使用できる機能のタイプは、PDK-Javaサンプル・ポートレットを使用して確認できます。

PDK-Javaサンプル・ポートレット・プロデューサにアクセスするには:

1. 統合WLSを起動します(第3.4.1項を参照)。

2. 「ヘルプ」メニューからWebCenter事前構成サーバーのReadmeを選択します。

3. Readmeファイルで、「Preconfigured Portlet Producers」という見出しに移動し、「PDK-Java Portlet producers」の下の「PDK-Java Sample Producer」または「PDK-Java Struts Sample Producer」リンクの場所をコピーします。
Oracle PDK-Javaポートレット・プロデューサの登録ウィザードで、コピーしたリンクをプロデューサURLとして使用します。

注意:

ポートレット・プロデューサの登録の詳細は、第62章「ポートレットの消費」を参照してください。

ポートレット・プロデューサ接続の登録先に応じて、そのポートレットは「アプリケーション・リソース」または「リソース・パレット」に表示されます。ここから、各種ポートレットをFrameworkアプリケーション・ページにドラッグ・アンド・ドロップできます。

3.5 データベース・スキーマのインストール

特定のOracle WebCenter Portalコンポーネントを使用するには、スキーマがサポート対象データベースにインストールされている必要があります。この項では、Oracle、SQL Server、およびDB2データベースに対するスキーマのインストールについて説明します。

WebCenterがサポートしているデータベースの詳細は、OTNのドキュメント、Oracle Fusion Middlewareのサポート対象システムの構成を参照してください。

表3-1は、WebCenterで使用するスキーマと、スキーマのインストール方法のリストです。すべてのスキーマに対して、リポジトリ作成ユーティリティ(RCU)を使用する方法をお薦めします。ただし、WebCenter Portalのスキーマには、後述するSQLスクリプトを使用したインストール・オプションがあります。

表3-1 データベース・スキーマのサマリー

スキーマ

説明

インストール方法

WebCenter

タグ、リンク、リスト、投票およびピープル・コネクションのサービスを使用するには、データベースにWebCenter Portalのスキーマがインストールされている必要があります。

- RCU(推奨)

- SQLスクリプト(Oracleデータベースのみ。詳細は下記を参照。)

ポートレット

ポートレット・プロデューサでのカスタマイズ内容の格納用。

RCUのみ

アクティビティ

アクティビティ・グラフおよび分析製品用。

RCUのみ

ディスカッション/WebCenter Portalディスカッション・クローラ

ディスカッションおよびお知らせサービスのバックエンドとして使用します。

RCUのみ

3.5.1 RCUを使用したスキーマのインストール

WebCenterのデータベース・スキーマは、すべてRCUを使用してインストールすることをお薦めします。詳細は、Oracle Fusion Middlewareリポジトリ作成ユーティリティ・ユーザー・ガイドのスキーマの作成に関する項を参照してください。

3.5.2 SQLスクリプトを使用したWebCenter Portalのスキーマのインストール

タグ、リンクおよびピープル・コネクションのサービスを使用するには、データベースにWebCenter Portalのスキーマがインストールされている必要があります。これは、前の手順で使用した組込みSQLワークシート・ユーティリティを使用して実行できます。

WebCenter Portalスキーマをインストールするには:

1. 「ツール」メニューから「SQLワークシート」を選択します。

2. 「接続の選択」ダイアログで鉛筆のアイコンをクリックして接続を編集します。

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を再入力してこれらを受け入れます。

3.6 SharePoint用Oracle WebCenterアダプタのインストール

第26.2.3項「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を再起動します。

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

この章では、開発者がOracle JDeveloperでファイルを共有する場合のチーム開発環境について説明します。たとえば、ソース(またはバージョン)・コントロール・システム、Subversionに関する情報などがあります。

ヒント:

一般に、開発チームのメンバーは新しいポータル・アプリケーションを作成して、それをソース・コード・リポジトリにチェックインします。必要な接続を作成して、それらも同様にチェックインできます。

この章には次の項が含まれます:

- 第4.1項「Frameworkアプリケーションのソース・コントロールの有効化」

- 第4.2項「開発者が関与するFrameworkアプリケーション・ファイルの理解」

- 第4.3項「1回での共通要件の実装」

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

4.1 Frameworkアプリケーションのソース・コントロールの有効化

Frameworkアプリケーションのソース・コントロールは、その他の開発環境のソース・コントロールと同様の方法で使用できます。

JDeveloperには、ソース・コントロールのSubversionが含まれます。Oracleは、CVS (Concurrent Versions System)、DimensionsおよびClearCaseなどの他のソース・サポート・システムへの無料の拡張機能も提供します。これらの拡張機能は、JDeveloper内の「ヘルプ」→「更新の確認」メニュー・オプションから直接インストールできます。これが、拡張機能をインストールする推奨方法です。JDeveloperインスタンスからインターネットに接続できない場合は、Oracle Technology Network (OTN)(http://www.oracle.com/technetwork/index.html)から拡張機能をダウンロードします。更新の確認ウィザードで、ダウンロードするローカル・ファイルを指し示します。

注意:

拡張機能にアクセスするにはプロキシ・サーバーを構成する必要がある場合があります。プロキシ・サーバーを設定するには:

1. Oracle JDeveloperで、「ツール」メニュー・オプションを選択して、「プリファレンス」を選択します。

2. 「プリファレンス」ダイアログで、リストを下方向にスクロールし、「Webブラウザとプロキシ」を選択します。

3. 右ペインの「Webブラウザとプロキシ」で、「HTTPプロキシ・サーバーを使用」を選択し、プロキシ・サーバーのホスト名とポート番号を入力し、例外を入力します。「OK」をクリックします。

Subversion、またはインストール済のその他のソース・コントロール・システムは、JDeveloperで、「バージョニング」メニューをクリックするか、バージョニング・ナビゲータ(「表示」→「チーム」→「バージョニング・ナビゲータ」をクリック)を使用するかの2通りの方法で使用できます。「バージョニング・ナビゲータ」を図4-1に示します

図4-1 「バージョニング・ナビゲータ」

「図4-1 「バージョニング・ナビゲータ」」の説明

Subversionの詳細は、Oracle JDeveloperのオンライン・ヘルプ・システムおよび『Oracle Application Development Framework開発者ガイド』のソース・コントロール・システムの使用に関する項を参照してください。

4.1.1 Subversionリポジトリの作成

Subversionリポジトリを作成するには:

1. 「バージョニング」メニューから、「Subversion」、「ローカル・リポジトリの作成」の順に選択します。「Subversionリポジトリの作成」ダイアログが表示されます(図4-2を参照)。

図4-2 「Subversionリポジトリの作成」

「図4-2 「Subversionリポジトリの作成」」の説明

2. 「Subversion接続の作成」ダイアログで、接続の詳細を入力して「OK」をクリックします。(図4-3)

注意:

接続を作成する別の方法として、バージョニング・ナビゲータで「Subversion」を右クリックして、「新規リポジトリ接続」を選択します。

図4-3 「Subversion接続の作成」

「図4-3 「Subversion接続の作成」」の説明

3. これらのページは、「Subversion接続の編集」ページ(図4-4)で後から編集できます。

図4-4 「Subversion接続の編集」

「図4-4 「Subversion接続の編集」」の説明

4.1.2 Oracleチーム・プロダクティビティ・センターの理解

Oracleチーム・プロダクティビティ・センターはアプリケーション・ライフサイクル管理ツールで、このツールを使用すると、ソフトウェア開発チームは、JDeveloperを使用したアプリケーションの開発時に共同作業と効率的な作業が可能になります。これもJDeveloperの無料の拡張機能です。

Oracleチーム・プロダクティビティ・センターは、タスク、バグ、および不具合のリポジトリ(JIRAやBugzillaなど)と、独自の組込みタスク・リポジトリをIDEに統合します。また、JDeveloper内のチャット・インタフェースや、その他のチーム作業に役立つ機能(タスクに対してソース・コントロール・システムにチェックインされたファイルの詳細を記録する機能や、IDEのコンテキストを保存するなどの開発者の生産性支援機能など)を提供します。

Oracleチーム・プロダクティビティ・センターの詳細やダウンロードは、http://www.oracle.com/technetwork/index.htmlのOracle Technology Network (OTN)を参照してください。

4.2 開発者が関与するFrameworkアプリケーションのファイルの理解

ソース・コントロール・システムを使用する際には、特定のアクションがどのファイルに作用するかを理解していることが重要になります。これを理解していないと、プロジェクトに対して実行するアクションでチェックインまたはチェックアウトするファイルの数を間違えて、ソースを誤って壊す可能性があります。この項は、WebCenter Portal: Frameworkアプリケーションの作成中に実行する主なアクションに必要なファイルの理解に役立ちます。

この項には次のサブセクションが含まれます:

- 第4.2.1項「共通のオブジェクトに関連付けられたファイル」

- 第4.2.2項「メタデータ・ファイルに影響を与える開発者アクション」

4.2.1 共通のオブジェクトに関連付けられたファイル

Frameworkアプリケーションで使用する主要なオブジェクトは、次のとおりです。

- ページ

- ポートレット

- タスク・フロー

- データ・コントロール

これらの各オブジェクトは、異なる複数のメタデータ・ファイルで構成された非常に複雑なオブジェクトです。

ページ・メタデータ・ファイルの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFメタデータ・ファイルの概要に関する項を参照してください。ポートレットおよびプロデューサのメタデータ・ファイルの詳細は、付録A「 WebCenter Portal: Frameworkアプリケーションのファイル」を参照してください。

4.2.2 メタデータ・ファイルに影響を与える開発者アクション

表4-1に、開発者アクションと、これらのアクションの影響を受けるファイルを示します。ファイルを管理するときには、この情報を考慮に入れてください。

表4-1 メタデータ・ファイルに影響を与える開発者アクション

アクション

影響を受けるファイル

次の接続の作成または編集:

- BPEL

- コンテンツ・リポジトリ(Oracle Content Server、Oracle Portal、ファイル・システムなど)

- データベース

- ディスカッション

- 外部アプリケーション

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

- メール

- Oracle Secure Enterprise Search

- Oracle PDK-Javaプロデューサ

- WSRPプロデューサ

追加または更新:

- app-root/.adf/META-INF/connections.xml内の接続

- app-root/projectname/projectname.jpr内の接続ライブラリ

- app-root/.adf/META-INF/adf-config.xml内のサービスレベル構成(デフォルト接続を含む)

外部アプリケーション接続、および外部アプリケーション接続を必要とするすべての接続(メール、コンテンツ・リポジトリ、インスタント・メッセージおよびプレゼンスを含む)は、次のファイルも追加または更新します。

- app-root/src/META-INF/jps-config.xml内の資格証明ストア・プロバイダ

- app-root/src/META-INF/cwallet.sso内のユーザー名とパスワード

注意: 接続に指定するすべてのセキュアなデータは、jps-config.xml内で参照されるcwallet.ssoに格納されます。たとえば、データベース接続のパスワードはcwallet.ssoに格納されます。

WebCenter Portalのデータ・コントロールの作成

app-root/projectname/adfmsrc内の次のデータ・コントロール・ファイルが追加または更新されます。

- projectpackage/DataControls.dcx内のデータ・コントロール定義

- projectpackage/dcname.xml内のデータ・コントロール構造

- projectpackage/dcname/*.xml内のデータ・コントロールで使用するデータ構造の定義

- app-root/projectname/adfmsrc/META-INF/adfm.xml内のDCXファイルへのポインタ

- app-root/projectname/adfmsrc/return.xml内のコレクションに使用するデフォルト操作の定義

app-root/projectname/projectname.jpr内のコンテンツ・リポジトリのライブラリの更新

ページ階層内のページの追加または更新

- 親ページのページ階層ファイル(/oracle/webenter/portalapp/pagehierarchy/*Pages.xml)の追加または更新、および親が階層のルート・ページの場合はpages.xmlの更新

- 親ページからページが連結解除(たとえば、ページ階層からの削除や親の変更など)されたときには、元の親ページのページ階層ファイルの更新

- 関連するページのページ定義ファイル(*PageDef.xml)の追加または更新(新しいpagedefファイルが追加された場合は、pagedefとJPSXへのマッピングを追加するためのapp-root/projectname/adfmsrc/projectpackagename/DataBindings.cpxの更新)

サイト・リソース内のリソースの追加、更新または削除

mds/oracle/webcenter/siteresources/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/generic-site-resources.xmlの更新

Oracle PDK-JavaまたはWSRPポートレット・プロデューサの登録

app-root/src/META-INF/jps-config.xml内の資格証明ストア・プロバイダの追加または更新

追加:

- タグ・ライブラリ

- app-root/mds/producer.pxml (登録済プロデューサに関連)

- app-root/mds/directory: producerに対して、登録済プロデューサに関連する複数のファイル

app-root/projectname/adfmsrc/projectpackagename/DataBindings.cpx内のデータ・バインディングに対するファクトリ・クラスの追加または更新

更新:

- app-root/.adf/META-INF/connections.xml内のプロデューサへの接続と、それに関連付けられたURL接続

- app-root/.adf/META-INF/adf-config.xml内のメタデータ・リポジトリと資格証明ストアの構成

- app-root/projectname/src/META-INF/orion-application.xml内のWebCenter Portalの共有ライブラリ

- app-root/projectname/projectname.jpr内の外部アプリケーションのライブラリを含むFrameworkアプリケーションに必要なライブラリ

- app-root/projectname/public_html/WEB-INF/web.xml内のポートレットのサーブレットとフィルタ、および外部アプリケーションの自動ログイン・エントリ

プロデューサがWSRPでWS-Securityをサポートしている場合は、キーストア・ファイルのapp-root/.adf/META-INFへのコピー

Oracle PDK-JavaまたはWSRPポートレット・プロデューサの登録解除

プロデューサおよびURL接続を削除するためのapp-root/.adf/META-INF/connections.xmlの更新

app-root/mds/からのプロデューサ関連ファイルの削除

注意: プロデューサはアプリケーションから削除されますが、メタデータ・ファイル、ポートレット・ビュー・タグおよびポートレット・バインディングをアプリケーションから手動で削除する必要があります。他のプロデューサがapp-root/projectname/public_html/WEB-INF/web.xmlまたはapp-root/.adf/META-INF/adf-config.xmlに依存する場合、他はすべてそのままにしておく必要があります。メタデータ・ファイルは登録解除操作によって削除されますが、プロデューサが登録解除時に使用できなかった場合、プロデューサ側のカスタマイズを手動で削除する必要があります。

ページに対するポートレットの追加または削除

リソース・パレット内のポートレット・プロデューサ接続からのページに対するポートレットの追加または削除

リソース・パレットでポートレット・プロデューサのポートレットを追加する場合、WebCenter Portalは最初にプロデューサをアプリケーションに登録します(登録していない場合)。影響を受けるファイルについては、「Oracle PDK-JavaまたはWSRPポートレット・プロデューサの登録解除」の行を参照してください。これは、ページに対するポートレットの追加または削除を行い、この行で説明されているファイルに影響を与えます。

追加または更新:

- app-root/projectname/adfmsrc/projectpackagename/DataBindings.cpx内の新しいPageDefマッピング(存在しない場合)

- app-root/projectname/public_html/WEB-INF/faces-config.xml (これは、ポートレットなどのOracle ADFコンポーネントをページに追加するたびに発生します。)

- adf-faces-config.xml (これは、Oracle ADFコンポーネントをページに追加するたびに発生します。)

- ポートレットがWSRPの場合、app-root/projectname/public_html/WEB-INF/oracle-webservices.xml

追加:

- app-root/mds/に対して、新しくクローニングされたポートレット・インスタンスに関連する複数のファイル

- ポートレットがWSRPの場合は、app-root/projectname/public_html/WEB-INF/wsdlに対して、複数のWSDLおよびXMLファイル

更新:

- app-root/projectname/public_html/pagename.jspx内の<adfp:portlet>タグ(JSF Facesタグは、Oracle ADF Facesタグで置換されます。)

- app-root/projectname/adfmsrc/projectpackagename/pageDefs/pagenamePageDef.xml内のリージョン・バインディングとページ変数の定義

- ポートレットがWSRPの場合、app-root/projectname/public_html/WEB-INF/web.xml内のsecure-refエントリ

コンテンツ・リポジトリ接続からページへのファイルまたはフォルダのドラッグ

ページ上のコンテンツ・リポジトリ・データ・コントロールのドラッグ

更新:

- app-root/projectname/public_html/pagename.jspx内の該当するADF Facesタグ

- app-root/projectname/adfmsrc/projectpackagename/pageDefs/pagenamePageDef.xml内のリージョン・バインディング

- app-root/projectname/adfmsrc/projectpackagename/DataBindings.cpx内のページ定義のリスト

- app-root/projectname/adfmsrc/META-INF/adfm.xml内のデータ・バインディング・ファイルへのポインタ

- app-root/.adf/META-INF/adf-config.xml内のMDS構成エントリ

- app-root/projectname/projectname.jpr内のサービス・ライブラリ、依存ライブラリおよびJSPタグ・ライブラリ

- app-root/projectname/public_html/WEB-INF/web.xml内のADFライブラリ、外部アプリケーションおよびMDS構成エントリ

接続を必要とするサービスに対する、すべての接続関連ファイルの追加または更新

アプリケーションに存在していなかった必要な接続のコピー。これによる、app-root/.adf/META-INF/connections.xmlおよびapp-root/projectname/projectname.jprの更新

注意: 最近のアクティビティ・サービス、検索サービス、およびタグ・サービスにより、検索拡張機能がadf-config.xmlに追加され、サンプルのservice-definition.xmlファイルが作成されます(このファイルが存在しない場合)。service-definition.xmlファイルを使用すると、開発者はサービスのQueryManagerの実装を定義できます。

JSR 286ポートレット・アプリケーションの作成、またはJSPファイルを使用する既存のアプリケーションへのポートレットの追加

追加または更新:

- app-root/projectname/public_html/WEB-INF/portlet.xml

- app-root/projectname/public_html/WEB-INF/oracle-portlet.xml

- app-root/projectname/public_html/WEB-INF/web.xml

ポートレットのJavaソース・ファイルおよびJSPソース・ファイルの追加

JSR 286ポートレット・アプリケーションの作成、またはADF/JSPXオプションを使用する既存のアプリケーションへのポートレットの追加

このオプションを指定して生成されたポートレット・アプリケーションは、Oracle Portlet Bridgeを使用してFacesアプリケーションにアクセスします。

追加または更新:

- app-root/projectname/public_html/WEB-INF/portlet.xml内のポートレット・ブリッジの構成情報

- app-root/projectname/public_html/WEB-INF/oracle-portlet.xml内のポートレット・ブリッジの構成情報

- app-root/projectname/public_html/WEB-INF/web.xml内のFacesサーブレットの構成情報

- app-root/src/META-INF/orion-application.xml内のadf.oracle.domainおよびoracle.webcenter.skinの共有ライブラリのインポート文

追加:

- ポートレットのJavaソース・ファイルおよびJSPXソース・ファイル

- app-root/projectname/public_html/WEB-INF/faces-config.xml

PDKポートレット・プロデューサ・アプリケーションの作成

追加または更新:

- app-root/projectname/public_html/WEB-INF/web.xml内のプロデューサ・サーブレットの定義およびプロデューサ・デプロイメントの詳細

- service_id.properties内のプロデューサ構成の属性

- app-root/src/META-INF/orion-application.xml内のoracle.portalの共有ライブラリのインポート文

ポートレットのJavaファイルおよびJSPファイルの追加

セキュアなWSRPプロデューサ(WS-Security)の登録

app-root/.adf/META-INF/connections.xml 内のセキュアなプロデューサ接続定義の更新

注意: セキュアなプロデューサのconnections.xmlエントリは、セキュリティ・ポリシーの格納方法が異なるように見えます。セキュリティ・ポリシーのすべての記述ではなく、セキュリティ・ポリシーはURIのみの記述になります(これは、ポリシー・リポジトリ内のポリシーへのポインタです)。

connections.xml内のセキュアな参照属性は、資格証明ストア(app-root/src/META-INF/jps-config.xmlで定義されています)に格納されます。資格証明ストアの構成情報(jps-config.xmlで定義されています)は、app-root/.adf/META-INF/adf-config.xmlに格納されます。設計時には、資格証明ストアはデフォルトでOracle Wallet (META-INF/cwallet.sso)に格納されます。

プロジェクトのADFセキュリティの構成

追加または更新:

- app-root/projectname/public_html/WEB-INF/web.xml内のログイン構成、ADF認証サーブレット、セキュリティ制約、論理ロールおよびマッピング

- app-root/src/META-INF/jps-config.xml内のアイデンティティ・ストア、資格証明ストア、ポリシー・ストア、匿名プロバイダおよびログイン・モジュール

- app-root/.adf/META-INF/adf-config.xml内のADFアイデンティティ・ストアおよび資格証明ストア構成

- app-root/src/META-INF/jazn-data.xml内のXMLアイデンティティ・ストア

- app-root/src/META-INF/jazn-data.xml内のアプリケーション権限

ページのコンポーネントまたはサービスの追加

更新:

- app-root/projectname/public_html/WEB-INF/weblogic.xml内のデータ・ソース(WebCenterDS、ActivitiesDS)構成およびWebCenter Portal共有ライブラリ

- app-root/src/META-INF/weblogic-application.xml内のWebCenter Portal共有ライブラリおよびXMLパーサー構成

- app-root/projectname/public_html/WEB-INF/web.xml内のデータ・ソース構成、コンテキスト・パラメータおよびリスナー、JSPサーブレット、リソース・サーブレット、adfBindingsフィルタおよび写真サーブレットのエントリ

- app-root/.adf/META-INF/adf-config.xml内のMDS構成マッピング

- app-root/projectname/projectname.jpr内のサービス固有のライブラリ

- app-root/projectname/src/META-INF/jazn-data.xml内のタスク・フローのセキュリティ権限付与(アプリケーションがADFセキュリティで構成されている場合)

- app-root/projectname/adfmsrc/projectpackagename/pageDefs/pagenamePageDef.xml内のリージョン・バインディング

- app-root/projectname/adfmsrc/META-INF/adfm.xml内のデータ・バインディング・ファイルへのポインタ

- app-root/projectname/adfmsrc/projectpackagename/DataBindings.cpx内のタスク・フロー・バインディング定義ファクトリおよびpageDefのエントリ

- app-root/projectname/public_html/pagename.jspx内の該当するADF Facesタグ

注意: 一部のサービスには別のファイルに影響を与えるものや、設計時に他のサービスに依存するものもあります。これに該当するサービスを、次の各行に示します。projectname.jprファイルおよびweb.xmlファイルのサービス・ライブラリと依存ライブラリが更新されます。

アクティビティ・ストリーミング

依存サービス: 外部アプリケーション、IMP

お知らせ

更新:

- weblogic-application.xml内のディスカッション共有ライブラリ

- app-root/.adf/META-INF/adf-config.xml内のMDSマッピングおよびサービス固有の構成エントリ

依存サービス: 外部アプリケーション、IMP、リンク、検索

コンポーザ

更新:

- app-root/projectname/public_html/WEB-INF/web.xml内のコンテキスト・パラメータ

- app-root/.adf/META-INF/adf-config.xml内のMDSマッピングとADF Faces、リソース・バンドルおよびカタログ構成エントリ

$PROJECT_DIR/src/<projectpackagename>/default-catalog.xmlの追加

ディスカッション

更新:

- app-root/src/META-INF/weblogic-application.xml内のディスカッション共有ライブラリ

- app-root/.adf/META-INF/adf-config.xml内のMDSマッピングおよびサービス固有の構成エントリ

依存サービス: 外部アプリケーション、IMP、リンク、検索

ドキュメント、Wikiおよびブログ

更新:

- app-root/projectname/public_html/WEB-INF/web.xml内のADFライブラリ・フィルタ/サーブレット、GetHandlerサーブレットおよびフィルタ・マッピング

- app-root/.adf/META-INF/adf-config.xml内のMDSマッピング

依存サービス: 外部アプリケーション、IMP、リンク、検索、タグ

外部アプリケーション

app-root/projectname/public_html/WEB-INF/web.xml内のExtAppLoginサーブレットおよびフィルタ・マッピングの更新

イベント

app-root/.adf/META-INF/adf-config.xml内のMDSマッピングおよびサービス固有の構成エントリの更新

依存サービス: 外部アプリケーション、リンク、検索

インスタント・メッセージおよびプレゼンス(IMP)

更新:

- weblogic-application.xml内のSDP共有ライブラリ

- app-root/.adf/META-INF/adf-config.xml内のサービス固有の構成エントリ

依存サービス: 外部アプリケーション

リンク

app-root/.adf/META-INF/adf-config.xml内のサービス固有の構成エントリの更新

リスト

app-root/.adf/META-INF/adf-config.xml内のMDSマッピングの更新

依存サービス: 外部アプリケーション、IMP、リンク、検索

メール

app-root/.adf/META-INF/adf-config.xml内のMDSマッピングおよびサービス固有の構成エントリの更新

依存サービス: 外部アプリケーション、IMP

ページ

更新:

- app-root/projectname/adfmsrc/projectpackagename/DataBindings.cpx内の属性

- app-root/.adf/META-INF/adf-config.xml内のMDSマッピング

依存サービス: リンク、検索、コンポーザ

ピープル・コネクション

依存サービス: 外部アプリケーション、IMP、コンポーザ、アクティビティ・ストリーミング

投票

app-root/.adf/META-INF/adf-config.xml内のMDSマッピングおよびサービス固有の構成エントリの更新

依存サービス: 外部アプリケーション、IMP

最近のアクティビティ

app-root/.adf/META-INF/adf-config.xml内のサービス固有の構成エントリの更新

依存サービス: 検索

RSS

更新

- app-root/src/META-INF/weblogic-application.xml内のディスカッション共有ライブラリ

- app-root/.adf/META-INF/adf-config.xml内のMDSマッピング

依存サービス: 外部アプリケーション

検索

app-root/.adf/META-INF/adf-config.xml内のMDSマッピングおよびサービス固有の構成エントリの更新

$WORKSPACE_DIR/.adf/META-INF/service-definition.xmlの追加

タグ

app-root/.adf/META-INF/adf-config.xml内のサービス固有の構成エントリの更新

依存サービス: 外部アプリケーション、IMP、検索、リンク

ワークリスト

app-root/src/META-INF/weblogic-application.xml内のSOA共有ライブラリの更新

依存サービス: 検索、リンク

4.3 1回での共通要件の実装

プロジェクト管理者は、開発者に共通する要件を一度に実装して、そのバージョンを全員が使用できるようにチェックインすることをお薦めします。前もって計画し、管理者がこれらの共通要件を考慮しておくことで、冗長的な作業やエラーを削減できます。

たとえば、2人の開発者が、アプリケーションの別々のページにOmniPortletを追加する必要があるとします。この場合、プロジェクト管理者がOmniPortletプロデューサを登録していれば、両方の開発者がこのプロデューサを使用できます。このようにしていないと、各開発者が別々にOmniPortletプロデューサを登録するようになり、不要な重複と混乱の原因になります。

別の例として、多数の開発者が、同じコンテンツ・リポジトリのコンテンツを必要としているとします。この場合は、最初に1人が必要な接続を設定してチェックインする必要があります。その後、その他の開発者は同じデータ・コントロールを再利用するだけです。

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

チーム環境で作業する場合は、ポートレット・プロデューサに関する次の考慮事項に留意してください。

- 第4.4.1項「ポートレット・プロデューサの接続」

- 第4.4.2項「ポートレット・プロデューサ名のクラッシュ」

- 第4.4.3項「異なるポートレット・プロデューサからのポートレットの結合」

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

プロジェクトに対してEARファイルを構築する場合、個々のプロジェクトではなくアプリケーション全体に対して接続がロードされます。たとえば、P1およびP2という2つのプロジェクトを持つアプリケーションがあるとします。P1には100個のプロデューサが登録されており、P2にはプロデューサは登録されていません。この場合、どちらかのプロジェクトに対してEARファイルを構築すると、P1のプロデューサ接続の100個全部がconnections.xmlにロードされます。ただし、手動でconnections.xmlを編集することもできますので覚えておいてください。

デプロイ前ツールを実行してターゲットのEARファイルを作成する場合、connections.xml内のすべての接続にアクセスできる必要があります。このため、この例では、P1の100個のポートレット・プロデューサ接続のいずれかがなんらかの理由で使用不可能になると、どちらのプロジェクトのターゲットのEARファイルも生成に失敗します。全体の開発作業をアプリケーションおよびプロジェクト別に分担するときは、この動作を考慮して、慎重に計画する必要があります。

4.4.2 ポートレット・プロデューサ名のクラッシュ

Oracle WebCenter Frameworkでは、同じ名前で2つのポートレット・プロデューサを登録できますが、一般にこのような状況は避けた方が賢明です。たとえば、2人の開発者が同じアプリケーションに対して作業しているときに、誤ってポートレット・プロデューサを同じ名前で登録した場合、通常は、そのプロデューサ名のどちらかを一意の名前に変更することがベストです。2つのポートレット・プロデューサが同じ名前で登録されている場合、ポートレット・プロデューサに対してエラーのデバッグや管理タスクを実行する際に、両者を区別することが非常に難しくなります。

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

場合によっては、複数の開発者でポートレットを構築し、最終的にこれらのポートレットを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つの内2つのOmniPortletで次のエラーが表示されます。

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ファイルを参照していることを確認してください。

5 Frameworkおよびポートレット・プロデューサ・アプリケーションの作成

WebCenter Portalでは、Frameworkアプリケーションとポートレット・プロデューサ・アプリケーションの2種類のアプリケーションを作成するためのテンプレートを用意しています。Frameworkアプリケーションは、ナビゲーション、ソーシャル・コンピューティング・サービス、および実行時カスタマイズを含むポータルWebアプリケーションを作成するために構成されたADF Webアプリケーションです。ポートレット・プロデューサ・アプリケーションは、標準ベースのポートレットを作成およびデプロイするために構成されています。

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

- 第5.1項「アプリケーション・テンプレートとは」

- 第5.2項「Frameworkアプリケーションの作成」

- 第5.3項「ポータルへのページの追加」

- 第5.4項「PortalWebAssetsプロジェクトの理解」

- 第5.5項「ポートレット・プロデューサ・アプリケーションの作成」

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

5.1 アプリケーション・テンプレートとは

Frameworkアプリケーションやポートレット・プロデューサ・アプリケーションに適したコンポーネントを簡単に見つけて使用できるようにするには、適切なテクノロジ・スコープを設定し、タグ・ライブラリを追加して、必要になるJavaクラスをクラス・パスに追加しておく必要があります。このようにしておくと、関連するコンポーネントがコンポーネント・パレットに取り込まれ、関連するポップアップ・メニューがJDeveloperで使用できるようになります。

Oracleが提供する即時利用可能なアプリケーション・テンプレートでは、Frameworkアプリケーションやポートレット・プロデューサ・アプリケーションの作成に向けた、適切なスコープが設定され、適切なタグおよびJavaのライブラリが追加されます。

「WebCenter Portal - Frameworkアプリケーション」テンプレートを使用すると、固有のテクノロジ・スコープ、ライブラリおよびデフォルト・ファイルを含むデフォルトのWebCenter Portal: Frameworkプロジェクトが生成されます。さらに、このテンプレートを使用すると、JDeveloperのユーザー・インタフェースには、Frameworkプロジェクトに適したオプションのタイプのみが表示されるようになります。

注意:

アプリケーションにデフォルトのファイルとフォルダが移入されるだけでなく、このテンプレートでは、「リソース・パレット」に「WebCenter Portal - Frameworkカタログ」と「WebCenter Portal - サービス・カタログ」を移入します。このサービス・カタログには、WebCenter Portalをアプリケーションに統合するために使用できる、データ・コントロールとタスク・フローが含まれています。「WebCenter Portal - Frameworkカタログ」には、ポータルの作成に最も一般的に使用されるコンポーネントのコレクションが格納されています。詳細は、第15章「リソース・カタログの作成および管理」を参照してください。

アプリケーション・テンプレートは、事前定義済のプロジェクトのセットとテクノロジ・スコープを使用して、アプリケーションを簡単に作成する手段を提供するものです。テンプレートでは、アプリケーションを、処理全体の論理的な区分を反映するプロジェクト単位に分割する方法も提供されます。

アプリケーション・テンプレートには次のものが含まれています。

- WebCenter Portal - Frameworkアプリケーション: アプリケーションにポータル・プロジェクトおよび静的アプリケーション・リソース・プロジェクトが移入されます。ポータル・プロジェクトには、サイト・ナビゲーション、ページ階層、委任管理、セキュリティ、ページ・テンプレート、実行時カスタマイズなどの機能が含まれます。Frameworkアプリケーションは、ポートレットの利用、コンテンツ管理サービスの組込み、およびWebCenterソーシャル・コンピューティング・サービスの組込みが可能です。静的アプリケーション・リソース・プロジェクトには、HTMLファイルやイメージ・ファイルのような静的アプリケーション・リソースが含まれます。このプロジェクトは、デフォルトで、PortalWebAssetsと呼ばれます。静的リソースを個々のプロジェクトに分離することによって、これらのリソースを専用サーバーにデプロイすることが可能となります。第5.2項「Frameworkアプリケーションの作成」および第5.4項「PortalWebAssetsプロジェクトの理解」を参照してください。

- WebCenter Portal - ポートレット・プロデューサ・アプリケーション: JSR 286(標準ベース)ポートレットとOracle PDK-Javaポートレットの作成用にスコープ設定されたプロジェクトがアプリケーションに事前移入されます。第60.1項「PDK-Javaポートレットの概要」を参照してください。

テンプレートの使用は必須ではありません。必要に応じて、手動でアプリケーション・テクノロジをスコープ設定し、関連プロジェクトを作成することによって、独自のFrameworkアプリケーションやポートレット・プロデューサ・アプリケーションを作成できます。詳細は、第6.1項「テクノロジ・スコープによるFrameworkアプリケーションの手動構成」を参照してください。

別のテンプレートで作成した既存のアプリケーションを使用している場合は、そのアプリケーションをWebCenter Portalのコンポーネントで拡張できます。これを行うには、必要なプロジェクト、テクノロジ・スコープ、およびタグ・ライブラリを手動で追加する必要があります。既存のアプリケーションを拡張する方法の詳細は、第6.2項「WebCenter機能を組み込むためのWebCenter Portal: Framework以外のアプリケーションの拡張」を参照してください。

この項では、WebCenter Portal - Frameworkアプリケーション・テンプレートを使用してアプリケーションを作成する方法について説明します。

注意:

テクノロジ・スコープでは、「新規ギャラリ」ダイアログにデフォルトで表示されるオプションを制御します。また、JDeveloperに表示されるポップアップ・メニューの制御や、プロジェクトへのタグの追加(この結果、タグがコンポーネント・パレットに表示される)にも使用されます。

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

この項では、WebCenter Portal: Frameworkアプリケーションの作成方法について説明します。Frameworkアプリケーションとは、WebCenter Portal - Frameworkアプリケーション・テンプレートという特別なテンプレートを使用して作成されたポータルです。ポータルの詳細は、第8章「Frameworkアプリケーションの理解」を参照してください。

- 第5.2.1項「Frameworkアプリケーションの作成方法」

ヒント:

WebCenter Portal - Frameworkアプリケーション・テンプレートは、サイト・ナビゲーション、ページ階層、委任管理、セキュリティ、ページ・テンプレート、実行時カスタマイズなどの機能を含む1つのポータル・プロジェクトをFrameworkアプリケーションに移入します。詳細は、第8.12項「WebCenter Portalファイルの編成方法」を参照してください。

5.2.1 Frameworkアプリケーションの作成方法

Frameworkアプリケーションは、WebCenter Portal - Frameworkアプリケーション・テンプレートを使用して作成するポータルです。このテンプレートを使用してポータルを作成するには:

1. アプリケーションの作成ウィザードにアクセスします。JDeveloperでは、いくつかの方法でこのウィザードにアクセスできます。例:

- 「ファイル」メニューから「新規」を選択します。「新規ギャラリ」で、「アプリケーション」を開き、「WebCenter Portal - Frameworkアプリケーション」を選択して「OK」をクリックします。図5-1に例を示します。

図5-1 「新規ギャラリ」ダイアログ

「図5-1 「新規ギャラリ」ダイアログ」の説明

- 「アプリケーション」メニューから、「新規作成」を選択します。ダイアログで、「WebCenter Portal - Frameworkアプリケーション」を選択します。

- 開いている既存のアプリケーションがある場合は、アプリケーション・ナビゲータで「<Application-Name>」を右クリックして、「新規作成」を選択します。「新規ギャラリ」で、「アプリケーション」を開き、「WebCenter Portal - Frameworkアプリケーション」を選択して「OK」をクリックします。

- 開いている既存のアプリケーションがある場合は、アプリケーション・ナビゲータで、「<Application-Name>」ドロップダウン・メニューから「新規作成」を選択します。「新規ギャラリ」で、「アプリケーション」を開き、「WebCenter Portal - Frameworkアプリケーション」を選択して「OK」をクリックします。

注意:

この時点では、WebCenter Portal - Frameworkアプリケーション・ウィザードの最初のページが表示されています。このウィザードには、次の各手順で説明する4つのページがあります。

2. アプリケーションの名前を「アプリケーション名」フィールド(図5-2)に入力します。

図5-2 WebCenter Portal - Frameworkアプリケーションの作成ウィザード - ステップ5の1

「図5-2 WebCenter Portal - Frameworkアプリケーションの作成ウィザード - ステップ5の1」の説明

3. 「ディレクトリ」フィールドにアプリケーションを格納するディレクトリのパスを入力するか、デフォルト・パスを受け入れます。
例:

C:\JDeveloper\mywork\Application1

オプションで、「参照」ボタンをクリックして、目的のディレクトリに移動します。

4. 必要に応じて、「アプリケーション・パッケージの接頭辞」フィールドに、このアプリケーション内に作成されるパッケージに使用する接頭辞を入力します。

注意:

ウィザードの起動方法によっては、「アプリケーション・テンプレート」リストが表示されることがあります。このリストが表示された場合は、「WebCenter Portal - Frameworkアプリケーション」が選択されていることを確認してください。

ヒント:

この時点で、「終了」をクリックすると、デフォルトのFramework機能(ページ階層とナビゲーションを含む)でプロジェクトを作成できます。ここでは、このウィザードの残りのページについて説明を続けます。

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

6. 図5-3に示すように、プロジェクト名を入力します。

図5-3 WebCenter Portal - Frameworkアプリケーションの作成ウィザード - ステップ5の2

「図5-3 WebCenter Portal - Frameworkアプリケーションの作成ウィザード - ステップ5の2」の説明

7. プロジェクトを配置するディレクトリを入力するか、「参照」ボタンを使用してディレクトリを選択します。

8. 必要に応じて、「プロジェクト・テクノロジ」を追加または削除します。詳細は、第6.1.3項「Frameworkアプリケーションのデフォルトのテクノロジ・スコープ」を参照してください。

9. 必要に応じて、「生成済コンポーネント」タブおよび「関連ライブラリ」タブを選択して、プロジェクトに追加される別の構成ファイルおよびライブラリを確認します。詳細は、第1.10項「知識が必要な構成ファイル」を参照してください。

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

11. 必要に応じて、図5-4に示すように、デフォルト・パッケージの名前、およびJavaソース・ファイルと出力クラス・ファイルのデフォルトのディレクトリを入力します。

図5-4 WebCenter Portal - Frameworkアプリケーションの作成ウィザード - ステップ5の3

「図5-4 WebCenter Portal - Frameworkアプリケーションの作成ウィザード - ステップ5の3」の説明

12. ウィザードの次のページには、図5-5に示すように、2つのチェック・ボックスがあります。通常はデフォルトの設定が推奨されますが、次に示す「注意」でこのウィザード・ページの詳細を確認してください。

図5-5 WebCenter Portal - Portal Frameworkの作成ウィザード - ステップ5の4

「図5-5 WebCenter Portal - Portal Frameworkの作成ウィザード - ステップ5の4」の説明

注意:

Oracle WebCenter Portal: Frameworkの機能(ページ階層やナビゲーション)をアプリケーションに組み込む場合は、最初のチェック・ボックス(「標準ポータル機能のアプリケーションの構成」)を選択したままにします。このチェック・ボックスの選択を解除すると、Framework機能を含まない従来型のOracle Fusion Webアプリケーションを作成することになります。このチェック・ボックスの選択または選択解除による効果の詳細は、第6.1項「テクノロジ・スコープによるFrameworkアプリケーションの手動構成」を参照してください。

Oracle WebCenter Portal: Frameworkの機能を使用する必要のないことが確実にわかっている場合を除き、最初のチェック・ボックスは選択したままにすることをお薦めします。

2番目のチェック・ボックス(「すべてのオブジェクトへの自動付与の有効化」)を使用すると、すべてのタスク・フローとページに対する表示アクセス権のあるtest-allという特殊なロールを作成できます。このオプションは、主にアプリケーションのテストを簡単にするために追加します。デフォルトでは、選択解除されています。

13. 「次へ」をクリックします。

14. 最後のウィザード・ページでは、静的アプリケーション・リソース・プロジェクトを構成できます。このプロジェクトは、デフォルトで、PortalWebAssetsと呼ばれます。このプロジェクトには、HTMLファイルやイメージ・ファイルのような静的アプリケーション・リソースが含まれます。静的リソースを個々のプロジェクトに分離することによって、これらのリソースを専用サーバーにデプロイすることが可能となります。詳細は、第5.4項「PortalWebAssetsプロジェクトの理解」を参照してください。

図5-6 WebCenter Portal: Frameworkアプリケーションの作成ウィザード - ステップ5の5

「図5-6 WebCenter Portal: Frameworkアプリケーションの作成ウィザード - ステップ5の5」の説明

15. 「終了」をクリックして、Frameworkアプリケーションを作成します。

5.3 ポータルへのページの追加

WebCenter Portal - Frameworkアプリケーション・テンプレートを使用すると、新しいポータル・アプリケーションに複数のページが移入されます。この章では、ポータル・アプリケーションに新しいページを追加する方法について説明します。第8.5.1項「ページ、ページ・テンプレートおよびポータルのページ階層の理解」も参照してください。

注意:

JDeveloperでポータル・ページを作成するときには、JSPページ(.jsp)ではなく、常にJSPドキュメント(.jspx)として作成してください。ページ・カスタマイズが格納されるようにするには、そのページがXMLで表されている必要があります。XML形式のJSPドキュメント(.jspx)を作成するように選択することで、Frameworkアプリケーション・ページのカスタマイズが常に可能になります。

1. JDeveloperを起動します。

2. 「アプリケーション・ナビゲータ」で、ポータル・プロジェクト内のpagesフォルダ(Web Content/oracle/webcenter/portalapp/pages)を右クリックして、「新規作成」を選択します。

3. 「新規ギャラリ」で、「Web層」を開いて、「JSF」、「JSFページ」の順に選択し、「OK」をクリックします。

4. 「JSFページの作成」ダイアログ(図5-7)で、ページのファイル名を入力します。

図5-7 「JSFページの作成」ダイアログ

「図5-7 「JSFページの作成」ダイアログ」の説明

5. 「XMLドキュメントの作成(*.jspx)」を選択します。

6. ページ・テンプレートを選択します。ページ・テンプレートの詳細は、第8.5.1項「ページ、ページ・テンプレートおよびポータルのページ階層の理解」を参照してください。

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

このダイアログ内のFrameworkアプリケーション・ページに固有ではないその他の設定の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。

5.4 PortalWebAssetsプロジェクトの理解

このセクションでは、PortalWebAssetsプロジェクトについて説明します。このプロジェクトには、必要に応じてHTMLファイルやイメージなどの静的リソースを配置できます。PortalWebAssetsプロジェクトは、新しいFrameworkアプリケーションにデフォルトで作成されます。

- 第5.4.1項「概要」

- 第5.4.2項「静的アプリケーション・リソース・プロジェクトの分離」

- 第5.4.3項「デプロイメントのオプション」

- 第5.4.4項「ELを使用した静的リソースの管理」

5.4.1 概要

Webアプリケーションの静的リソースは、HTMLファイルやイメージ・ファイルと同様に、通常はアプリケーションとともにバンドルされてデプロイされます。動的リソースと静的リソースのどちらのリクエストも、通常、ホスト・アプリケーション・サーバーで処理されます。サーバーのパフォーマンスを最適化するには、静的リソースをアプリケーションから分離して、それらを別のサーバー(できれば安価でよりスケーラブルなサーバー)にデプロイする方法があります。Frameworkアプリケーションは、HTMLやイメージなどの静的リソースを含む静的アプリケーション・リソース・プロジェクトでこのシナリオをサポートします。このプロジェクトは、デフォルトでPortalWebAssetsと呼ばれますが、プロジェクトの名前を好きなように変更できます。図5-8を参照してください。

図5-8 PortalWebAssetsフォルダ

「図5-8 PortalWebAssetsフォルダ」の説明

静的リソース・プロジェクトを使用する場合は、単に、コンテンツ(HTMLファイルやイメージ・ファイル)をプロジェクトに追加します。これは、../PortalWebAssets/public_htmlディレクトリ内にファイルを追加するか、JDeveloperで追加することにより、ファイル・システムから直接実行できます。たとえば、HTMLファイルを追加するには、「ファイル」メニューから「新規作成」を選択し、新規ギャラリ・ウィザードを使用してリソースを作成します。

注意:

スキンに使用するCSSファイルは、Frameworkアプリケーション・プロジェクトに維持しておく必要があります。スキンのCSSファイルは、静的アプリケーション・リソース・プロジェクトに配置しないでください。

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

ポータル・プロジェクトには、デフォルトで、静的アプリケーション・リソース・プロジェクト(PortalWebAssets)が依存性として含まれます。つまり、これらは、ともに構築され、同一サーバーにデプロイされることになります。静的リソースを別のサーバーにデプロイする必要がない場合は、静的リソース・プロジェクトに関して特別な処置を実行する必要はありません。

PortalWebAssetsプロジェクトとPortalプロジェクトを分離する場合は、次の手順を実行します。

1. Portalプロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで、図5-9に示すように、「依存性」ノードを選択します。

図5-9 プロジェクトの「依存性」ダイアログ

「図5-9 プロジェクトの「依存性」ダイアログ」の説明

3. 依存性を削除する場合は、「削除」ボタンをクリックするか、「編集」ボタンを選択して、「依存性の編集」ダイアログ(図5-10)でこのプロジェクトの選択を解除します。

図5-10 「依存性の編集」ダイアログ

「図5-10 「依存性の編集」ダイアログ」の説明

4. 2つの個別のアーカイブ(Portal.earとPortalWebAssets.jar)を生成して、それぞれを別のサーバーにデプロイします。第5.4.3項「デプロイメントのオプション」を参照してください。

5.4.3 デプロイメントのオプション

Portal.earファイルは、通常、アプリケーションの管理対象サーバーにデプロイされます。PortalWebAssets.jarファイルは、通常、PortalWebAssetsプロジェクトにWARデプロイメント・プロファイルを作成し、そのファイルをEARデプロイメント・プロファイルに含めることで任意のJ2EE準拠サーバー・コンテナにデプロイできます。あるいは、Apache WebサーバーにJARファイルを解凍する方がさらに簡単です。第69章「WebCenter Portal: Frameworkアプリケーションのデプロイおよびテスト」も参照してください。

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

開発者は、EL式を使用して、静的リソースのターゲットURLを自動的に生成できます。ELを使用する場合は、2つのオプションがあります。最初のオプションでは、ベースURLプリファレンスを定義する必要があります。2番目のオプションでは、URLを動的にマップできるようになります。

5.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を構成する必要がある場合は、次の項(第5.4.4.2項「URLの動的なマッピング」)で説明するテクニックを選択してください。

5.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>)に解決されます。

例5-1に、adf-config.xmlのマッピング構成例を示します。

例5-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>

5.5 ポートレット・プロデューサ・アプリケーションの作成

ポートレット・プロデューサ・アプリケーションは、標準ベース(JSR286)のポートレットおよびOracle PDK-Javaポートレットを作成するために構成します。この項では、ポートレット・プロデューサ・アプリケーション・テンプレートを使用して、ポートレット・アプリケーションを作成する方法について説明します。第57章「ポートレットの概要」も参照してください。

ポートレットを作成できるように既存のアプリケーションを拡張する方法の詳細は、第6.2項「WebCenter機能を組み込むためのWebCenter Portal: Framework以外のアプリケーションの拡張」を参照してください。

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

- 第5.5.1項「テンプレートを使用したポートレット・アプリケーションの作成方法」

- 第5.5.2項「ポートレット・プロデューサ・アプリケーション・テンプレートを使用する場合の処理」

5.5.1 テンプレートを使用したポートレット・アプリケーションの作成方法

ポートレット・プロデューサ・アプリケーション・テンプレートは、1つのプロジェクト(ポートレット)で構成されています。ポートレット・プロジェクトを使用すると、JSR 286(標準ベース)ポートレットおよびOracle PDK-Javaポートレットを作成できます。

ポートレット・プロデューサ・アプリケーション・テンプレートを使用してアプリケーションを作成するには:

1. 次のいずれかの方法で、アプリケーションの作成ウィザードにアクセスします。

- 「ファイル」メニューから「新規」を選択します。「新規ギャラリ」ダイアログで、「アプリケーション」を展開し、「WebCenter Portal - ポートレット・プロデューサ・アプリケーション」を選択して「OK」をクリックします。

- アプリケーション・ナビゲータから「新規アプリケーション」を選択します。

- 開いているアプリケーションがある場合は、アプリケーション・ナビゲータで、アプリケーション名のドロップダウン・メニューを開いて、「新規アプリケーション」を選択します。

- アプリケーション・ナビゲータで、アプリケーション名を右クリックして、「新規作成」を選択します。「新規ギャラリ」ダイアログで、「アプリケーション」を展開して「WebCenter Portal - ポートレット・プロデューサ・アプリケーション」を選択し、「次へ」をクリックしてさらにオプションを指定するか、「終了」をクリックしてアプリケーションを作成します。

2. 作成ウィザードの「アプリケーションの名前付け」ページで、「アプリケーション名」フィールドにアプリケーションの名前を入力します。

3. 「ディレクトリ」フィールドでは、デフォルト・パスを受け入れるか、アプリケーションを格納するディレクトリのパスを入力します。
例:

C:\JDeveloper\mywork\Application1

オプションで、「参照」ボタンをクリックして、目的のディレクトリに移動します。

4. 必要に応じて、「アプリケーション・パッケージの接頭辞」フィールドに、このアプリケーション内に作成されるパッケージに使用する接頭辞を入力します。

5. 「アプリケーション・テンプレート」リストから、「WebCenter Portal - ポートレット・プロデューサ・アプリケーション」を選択します。

注意:

「アプリケーション・テンプレート」リストは、手順1に示したように、アプリケーション・ナビゲータの「新規アプリケーション」をクリックしてウィザードを起動した場合にのみ表示されます。

6. 「終了」をクリックして、デフォルトのプロジェクト構成のポートレット・アプリケーションを作成します。

5.5.2 ポートレット・プロデューサ・アプリケーション・テンプレートを使用する場合の処理

ポートレット・プロデューサ・アプリケーション・テンプレートを使用すると、Java、JSP、サーブレットおよびポートレット・テクノロジ・スコープを使用するデフォルトのポートレット・プロジェクトが生成されます。これにより、JDeveloperユーザー・インタフェースには、作成するポートレットに適したオプションのタイプのみが表示されます。

この新しいプロジェクトを右クリックすると、JSR 286ポートレットおよびOracle PDK-Javaポートレットを作成するオプションを使用できます。

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

デフォルトでは、WebCenter Portal: Frameworkアプリケーションは、ADFセキュリティで構成されます。デフォルトのユーザー名とパスワード(weblogic/weblogic1)が自動的に作成され、このユーザー名とパスワードの組合せをテスト用にただちに使用できます。

デフォルトのログイン・ページとログアウト・ページは、WebCenter Portal: Frameworkアプリケーション・テンプレートでも提供されます。

ADFセキュリティの詳細は、第68章「WebCenter Portal: Frameworkアプリケーションの保護」を参照してください。また、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のFusion WebアプリケーションでのADFセキュリティの実施に関する項も参照してください。

6 拡張構成オプション

この章では、手動でWebCenter Portal: Frameworkアプリケーションを構成および拡張するテクニックについて説明します。この章には次の項が含まれます:

- 第6.1項「テクノロジ・スコープによるFrameworkアプリケーションの手動構成」

- 第6.2項「WebCenter機能を組み込むためのWebCenter Portal: Framework以外のアプリケーションの拡張」

- 第6.3項「WARファイルのインポートによるプロジェクトの作成」

6.1 テクノロジ・スコープによるFrameworkアプリケーションの手動構成

この項では、テクノロジ・スコープを追加または削除することで、WebCenter Portal: Frameworkアプリケーションを手動で構成する方法について説明します。

- 第6.1.1項「テクノロジ・スコープとは」
第6.1.2項「テクノロジ・スコープの追加と削除」

- 第6.1.3項「Frameworkアプリケーションのデフォルトのテクノロジ・スコープ」

- 第6.1.4項「WebCenter Portal: Frameworkアプリケーション固有のテクノロジ・スコープ」

- 第6.1.5項「Oracle WebCenter Portal: Frameworkテクノロジ・スコープを後から追加してWebCenter Portal: Frameworkアプリケーションを作成する場合」

- 第6.1.6項「WebCenter PS2以前のアプリケーションのWebCenter Portal: Frameworkアプリケーションへの移行」

6.1.1 テクノロジ・スコープとは

Frameworkアプリケーションは、プロジェクトのテクノロジと機能のコレクション(テクノロジ・スコープ)で構成されます。各スコープには、特定の機能をアプリケーションに提供する関連ライブラリが含まれます。テクノロジ・スコープを手動で追加または削除することで、アプリケーションを手動で構成できます。たとえば、使用しないことがわかっているコンポーネントは、Frameworkアプリケーションから削除できます。

6.1.2 テクノロジ・スコープの追加と削除

テクノロジ・スコープ(および、関連ライブラリ)は、次の方法で追加または削除できます。

まず、新しいアプリケーションを作成するときにデフォルト設定を変更できます。図6-1に、「WebCenter Portal - Frameworkアプリケーションの作成」ウィザードに表示される、使用可能なテクノロジ・スコープと選択済のテクノロジ・スコープのリストを示します。「選択済」列のスコープは、Frameworkアプリケーションを構成するテクノロジ・スコープのデフォルト・セットになります。このウィザードの詳細は、第5.2項「Frameworkアプリケーションの作成」を参照してください。

図6-1 WebCenter Portal: Frameworkアプリケーションの作成ウィザード - ステップ5の2

「図6-1 WebCenter Portal: Frameworkアプリケーションの作成ウィザード - ステップ5の2」の説明

「プロジェクト・プロパティ」ダイアログでテクノロジ・スコープを調整することもできます。「アプリケーション」メニューから「プロジェクト・プロパティ」を選択します。次に、ツリーから「テクノロジ・スコープ」を選択します。図6-2に示すように、このダイアログでは、プロジェクトの内外にプロジェクト・テクノロジを移動できます。

ヒント:

ダイアログ内のスコープをクリックすると、ダイアログの下部に短い説明が表示されます。

図6-2 「テクノロジ・スコープ」ダイアログ

「図6-2 「テクノロジ・スコープ」ダイアログ」の説明

「WebCenter Portal - Frameworkアプリケーションの作成」ウィザードを使用してFrameworkアプリケーションを作成する場合、作成されるアプリケーションのデフォルト構成とそのテクノロジ・スコープを決定する機会がもう1つ別にあります。図6-3に示すように、ウィザードの最後の画面には、「標準ポータル機能のアプリケーションの構成」というチェック・ボックスがあります。

図6-3 WebCenter Portal: Frameworkアプリケーションの作成ウィザード - ステップ5の4

「図6-3 WebCenter Portal: Frameworkアプリケーションの作成ウィザード - ステップ5の4」の説明

このオプションは、デフォルトで選択されていて、Oracle WebCenter Portal: Framework機能(ナビゲーション、ページ階層、委任管理など)をアプリケーションに追加することを、ウィザードに指示します。このボックスの選択を解除すると、これらの機能がアプリケーションに組み込まれなくなります。基本的には、WebCenter PS2 (WebCenter 11gリリース1 11.1.1.2.0)アプリケーションと同等の機能を備えたアプリケーションを作成することになります。

6.1.3 Frameworkアプリケーションのデフォルトのテクノロジ・スコープ

表6-1に、WebCenter Portal - Frameworkアプリケーション・テンプレートで作成されるアプリケーションとともに含まれる、デフォルトのテクノロジ・スコープとライブラリのリストを示します。Oracle WebCenter Portal: Frameworkテクノロジ・スコープは、ポータルとアプリケーションに固有の唯一のスコープです。このスコープでは、第8章「Frameworkアプリケーションの理解」で説明する、ナビゲーション、ページ階層、委任管理、ポータル機能の残りの部分が提供されます。

注意:

Oracle WebCenter Portal: Frameworkテクノロジ・スコープは、Frameworkアプリケーション・テンプレートで作成するアプリケーションに、デフォルトで追加されます。Frameworkアプリケーションの作成ウィザードでは、このウィザードの「標準ポータル機能のアプリケーションの構成」チェック・ボックス(図6-3)の選択を解除すると、このテクノロジ・スコープを除外できます。この場合は、WebCenter PS2 (WebCenter 11gリリース1 11.1.1.2.0)アプリケーションと同等の機能を備えたアプリケーションを作成することになります。

表6-1 デフォルトのテクノロジ・スコープおよび関連ライブラリ

デフォルトのテクノロジ・スコープ

関連ライブラリ

ADF Faces

ADFページ・フロー

ドキュメント・サービス

イベント・サービス

HTML

インスタント・メッセージおよびプレゼンス(IMP)サービス

Java

JSF

JSPおよびサーブレット

リンク・サービス

Oracle WebCenter Portalのコンポーザ

WebCenter Portal – Framework

Portlet Bridgeサービス

ポートレット・ビュー

スマート・タグ

タグ・サービス

WebCenter Portalのカスタマイズ可能なコンポーネント

WebCenter Portal: Services

XML

JSF Core

JSF HTML

ADF Facesランタイム11

ADF共通ランタイム

ADF Webランタイム

MDSランタイム

MDSランタイム依存性

Commons Beanutils 1.6.1

Commons Logging 1.0.3

Commons Collections 2.1

ADFページ・フロー・ランタイム

ADFコントローラ・ランタイム

JSPランタイム

6.1.4 WebCenter Portal: Frameworkアプリケーション固有のテクノロジ・スコープ

Frameworkアプリケーションの作成ウィザードの「標準ポータル機能のアプリケーションの構成」チェック・ボックスが選択されているときには(図6-3)、Oracle WebCenter Portal: Frameworkテクノロジ・スコープが、それ以外のアプリケーション・テクノロジ・スコープに加えてアプリケーションに追加されます。このチェック・ボックスの選択を解除すると、Oracle WebCenter Portal: Frameworkテクノロジ・スコープは追加されなくなります。

6.1.5 Oracle WebCenter Portal: Frameworkテクノロジ・スコープを後から追加してWebCenter Portal: Frameworkアプリケーションを作成する場合

このようなケースはサポートされていません。Frameworkアプリケーションを作成する場合は、WebCenter Portal: Frameworkアプリケーション・テンプレートを使用して作成を開始する必要があります。詳細は、第5章「Frameworkおよびポートレット・プロデューサ・アプリケーションの作成」を参照してください。

考えられる解決策の1つとして、新しいFrameworkアプリケーションを作成してから、既存のFrameworkアプリケーションをADFライブラリに変換する方法があります。その後で、そのADFライブラリをWebCenter Portal: Frameworkアプリケーションに含めます。

6.1.6 WebCenter PS2以前のアプリケーションのWebCenter Portal: Frameworkアプリケーションへの移行

移行で推奨される最良の実践方法は、WebCenter Portal: Frameworkアプリケーション・テンプレートを使用して新しい(PS6) Frameworkアプリケーションを作成してから、古いPS2アプリケーションのコンテンツ、構成およびロジックを新しいFrameworkアプリケーションに移行する方法です。

ヒント:

もう1つの考えられる解決策として、新しいFrameworkアプリケーションを作成してから、既存のFrameworkアプリケーションをADFライブラリに変換する方法があります。その後で、そのADFライブラリをFrameworkアプリケーションに含めます。

6.2 WebCenter機能を組み込むためのWebCenter Portal: Framework以外のアプリケーションの拡張

Framework以外のアプリケーション(たとえば、Fusion Webアプリケーション)を作成することがビジネス要件であるときに、そのアプリケーションにWebCenter機能も組み込む場合は、必要なテクノロジ・スコープとライブラリを追加することで、これを実現できます。たとえば、Webサービス、タスク・フロー、検索などの機能をアプリケーションに追加できます。

注意:

Frameworkアプリケーションは、ポータル以外のアプリケーションにOracle WebCenter Portal: Frameworkテクノロジ・スコープを追加するだけでは作成できません。第6.1.5項「Oracle WebCenter Portal: Frameworkテクノロジ・スコープを後から追加してWebCenter Portal: Frameworkアプリケーションを作成する場合」で説明しているように、このユース・ケースはサポートされていません。

テクノロジ・スコープによって、ユーザー・インタフェースのオプションが、構築するアプリケーション・プロジェクトのタイプに対応するオプションに限定されます。ライブラリでは、アプリケーション・コンテンツの作成に役立つコンポーネントと要素が提供されます。既存のアプリケーションを拡張すると、各種のリポジトリからのコンテンツを統合したり、ポートレットを作成したり、ポートレットやWebCenter Portalサービスを利用できるようになります。現行リリースまたは10.1.x.xリリースのADFアプリケーションを拡張できます。

アプリケーションを拡張するときには、特定のWebCenter機能に合せて最適化されたプロジェクトを作成することもできます。この項では、WebCenterのテンプレートで提供されるようなプロジェクトの作成と、そのプロジェクトへのテクノロジ・スコープとライブラリの追加を手動で実行するプロセスについて、手順を追って説明します。

アプリケーションでWebCenter機能を有効にするには:

1. アプリケーションを開きます。
アプリケーションの設定を移行するよう要求される場合は、「はい」をクリックします。

注意:

10.1.3.x Frameworkアプリケーションを移行した場合、そのアプリケーションは、Modelプロジェクト、ViewControllerプロジェクトおよびポートレット・プロジェクトを引き続き保持します。

2. 必要に応じて、アプリケーション・データ・モデルの定義、コンテンツの利用またはポートレットの作成用に新しいプロジェクトを作成します。

1. アプリケーション・ナビゲータでアプリケーションを右クリックし、ポップアップ・メニューから「新規プロジェクト」を選択します。

2. 「新規ギャラリ」で、「一般」を開き、「プロジェクト」、「汎用プロジェクト」の順に選択して「OK」をクリックします。

3. 汎用プロジェクトの作成ウィザードの「プロジェクト名」フィールドに、プロジェクトの名前を入力します。
たとえば、Viewと入力します。

4. 「ディレクトリ」フィールドにプロジェクトを格納するディレクトリのパスを入力するか、デフォルト・パスを受け入れます。

5. 「終了」をクリックして、新しいプロジェクトを作成します。

3. プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。

4. ダイアログの左側で、「テクノロジ・スコープ」を選択します。

5. ダイアログの「プロジェクト・テクノロジ」部分で、選択したプロジェクトで有効にするWebCenter関連の機能に応じて、必要なテクノロジとライブラリを追加します。全リストは、表6-1を参照してください。

6. 作業を保存します。

6.3 WARファイルのインポートによるプロジェクトの作成

JDeveloperを使用してアプリケーション環境にインポートする既存のWARファイルがある場合は、この手順に従います。プロジェクトをインポートすると、第6.1項「テクノロジ・スコープによるFrameworkアプリケーションの手動構成」で説明するように、WebCenter Portalの機能を使用して、そのプロジェクトを手動で構成できます。

注意:

接続情報は、アプリケーションレベルのEARファイルに格納され、プロジェクトレベルのWARファイルと一緒に自動でインポートされません。そのため、プロジェクトレベルのWARファイルをインポートする場合、アプリケーションが依存する接続を再構成する必要があります。

WARファイルをJDeveloperにインポートするには:

1. アプリケーション・ナビゲータでアプリケーションを右クリックし、ポップアップ・メニューから「新規プロジェクト」を選択します。

2. 「新規ギャラリ」で、「一般」を開き、「プロジェクト」、「WARファイルからのプロジェクト」の順に選択して「OK」をクリックします。

3. ウィザードの手順に従って、プロジェクトの作成を完了します。

4. アプリケーション・ナビゲータで新たに作成したプロジェクトを右クリックし、ポップアップ・メニューから「プロジェクト・プロパティ」を選択します。

5. 選択したプロジェクトで有効にするWebCenter関連の機能に応じて、必要なテクノロジ・スコープとライブラリを追加します。詳細は、第6.1項「テクノロジ・スコープによるFrameworkアプリケーションの手動構成」を参照してください。

6. 「OK」をクリックし、「プロジェクト・プロパティ」ダイアログを閉じます。

7 WebCenter Portal Services用アプリケーションの準備

この章では、Oracle WebCenter Portalのサービスを利用するようにアプリケーションを準備する方法について説明します。

この章には次の項が含まれます:

- 第7.1項「WebCenter Portalサービスのテクノロジの理解」

- 第7.2項「サービスを利用するためのFrameworkアプリケーションの準備」

- 第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」

- 第7.4項「サービスの一般設定の構成」

7.1 WebCenter Portalサービスのテクノロジの理解

Oracle WebCenter Portalサービスは、ソーシャル・コンピューティング・サービス、個人の生産性サービス、オンラインでの認識およびコミュニケーション、コンテンツ統合、Web分析などのエンタープライズ2.0機能で、既存のポータルおよびWebサイトを充実したものにします。

関連項目:

- サービスの概念情報については、第2.4項「Oracle WebCenter Portal: Servicesの概要」を参照してください

- Frameworkアプリケーションの基本情報(アプリケーションの作成方法など)については、第3章「開発環境の準備」を参照してください

この項では、サービスで使用できる主要なテクノロジについて概説します。これは、実装するサービスの決定や、ユーザー・インタフェースのカスタマイズに最適な方法を決定する際に役立ちます。

この項には次のサブセクションが含まれます:

- 第7.1.1項「WebCenter Portalの同格サービスの理解」

- 第7.1.2項「WebCenter PortalのAPIの理解」

- 第7.1.3項「WebCenter Portalのデータ・コントロールの使用」

7.1.1 WebCenter Portalの同格サービスの理解

WebCenter Portalのサービスには、同格のサービスとみなされるものがあります。これらのサービスは、1つのアプリケーション全体で他のサービスと相互作用します。

表7-1は、Oracle WebCenter Portal: Frameworkのサービス統合のリストです。

表7-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: Spacesアプリケーションでのみ使用できます。

この表に示した検索サービスは、WebCenter Portal検索アダプタを使用して、利用可能な各サービスを検索します。ただし、大規模な実装で最高のパフォーマンスを得るには、Oracle SES検索を使用するように構成する必要があります。Oracle SESは、次のリソースについてアプリケーションを検索します。

- ドキュメント(Wikiやブログを含む)

- お知らせおよびディスカッション

- WebCenter Portal: Spacesアプリケーションのみ: Spaces内のスペース、リスト、ページおよびピープルのリソース

詳細は、第44章「検索サービスの統合」を参照してください。

7.1.2WebCenter PortalのAPIの理解

この項では、WebCenter Portalサービスで使用できるAPIについて説明します。

複数のカスタマイズ・オプションが選択できる場合は、次の考慮事項に注意してください。

- WebCenter Portal: Spacesにアクセスするカスタム・クライアント(Spacesと相互作用するiPhoneアプリケーションなど)を作成する場合は、REST APIを使用してください。

- REST APIでは、ユーザー・インタフェースのカスタマイズや、カスタム・コンポーネントの開発を最も短時間で簡単に行うことができます。Spacesにアクセスするカスタム・ユーザー・インタフェースを作成する場合は、データ・コントロールまたはネイティブのAPIを使用することを検討してください。

- カスタム・ポータルまたは複合Frameworkアプリケーションを作成する場合は、データ・コントロールまたはネイティブのAPIを使用してください。

- Java、JDeveloper、およびADFについて習熟している場合は、データ・コントロールまたはネイティブのAPIを使用してください。その他の言語(特にJavaScript)を使用する場合は、REST APIを使用してください。

表7-2は、サービスと利用可能なAPIのリストです。サード・パーティのバックエンドを使用するサービス用に、利用可能なバックエンドのAPIも含まれています。

表7-2 サービスのサポート対象テクノロジ

WebCenter Portalサービス

データ・コントロール

Java API

REST API

バックエンドAPI

アクティビティ・グラフ

第45.3.1項「推奨データ・コントロールの使用方法」

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

第45.3.2項「アクティビティ・グラフ・サービスREST APIの使用」

分析

第46.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リファレンス

第41.1項「アクティビティ・ストリームREST API」

ディスカッション

第33.3.8項「ディスカッション・サービスREST APIの使用」

Oracle WebCenter Portalのディスカッション・サーバーを使用するWebサービス(WebCenter Portalはカスタム認証で設定されるため、構成が必要です)

Oracle Fusion Middlewareドキュメント・ライブラリのJiveフォーラムのドキュメントを参照してください(WebCenter Portal製品の部分にあります)。

ドキュメント(Wikiとブログを含む)

第27章「コンテンツ・データ・コントロールの使用」

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

Oracle Fusion Middleware Content Management REST Service開発者ガイド

Oracle Fusion Middleware Remote Intradoc Client (RIDC) Java APIリファレンスを参照してください。

Oracle Fusion Middleware Oracle Universal Content Managementサービス・リファレンス・ガイド

イベント

第51.3項「イベント・サービスREST APIの使用」

Microsoft ExchangeによるWebサービス

一般設定

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

リンク

第42.3.1項「リンク・サービスREST APIの使用」

リスト

第47.4項「リスト・サービスREST APIの使用」

通知

第48.3.2項「通知データ・コントロールの使用」

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

ページレット・プロデューサ

第65.2.2.2項「RESTを使用したページレットへのアクセス」

ピープル・コネクション

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

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

第41章「ピープル・コネクション・サービスREST API」(プロファイルおよびアクティブ・ストリームについて)

パーソナライズ

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス(カスタムのプロバイダおよびロケータの開発について)

第66.4項「パーソナライズの拡張」

投票

第36.3.4項「投票サービス・データ・コントロールの使用方法」

リソース・アクション・ハンドラ・フレームワーク

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

検索

第44.3.8項「検索サービス・データ・コントロールの使用」

注意: 検索データ・コントロールは、Oracle SES検索でのみサポートされます。

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

第44.3.7項「検索サービスREST APIの使用」

注意: 検索REST APIは、Oracle SES検索でのみサポートされます。

Oracle Secure Enterprise SearchによるWebサービスおよびJava API

タグ

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

第43.3.2項「タグ・サービスREST APIの使用」

関連項目:

式言語APIについては、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください

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

一部のサービスでは、カスタマイズされたユーザー・インタフェースをFrameworkアプリケーションまたはタスク・フローで構築するためのデータ・コントロールが用意されています。このタスク・フローをADFライブラリにデプロイすると、タスク・フローのポータブル消費が可能になります。たとえば、Spacesアプリケーションのリソース・カタログ(コンポーザ)にタスク・フローを追加してサイト・テンプレートを構築できます。

事前にサービスを統合する必要なしに、サービスのデータ・コントロールをユーザー・インタフェースの編集に使用できます。アプリケーションは、それぞれのサービスに含まれるいずれかのデータ・コントロールまたはタスク・フローが使用されたときに、そのサービスに応じて構成されます。

注意:

Oracle ADFアーキテクチャには、ユーザー・インタフェースでデータの構造を認識できるデータ・コントロールが用意されています。メタデータにより、データのコレクション、プロパティ、メソッドおよびタイプが表されます。属性、コレクションおよびメソッドをドラッグしてページにドロップすると、JDeveloperは自動的にページから関連サービスへのバインディングを作成します。

データ・コントロールの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

組込みデータ・コントロールを使用するには:

1. JDeveloperで、サービスに必要な接続を使用してWebCenter Portal Frameworkアプリケーションを作成します。

2. 「リソース・パレット」で「カタログ」、「WebCenter Portal - サービス・カタログ」、「データ・コントロール」の順に開きます。

3. データ・コントロールを右クリックして、「プロジェクトに追加」を選択します。

図7-1 「リソース・パレット」のデータ・コントロール

「図7-1 「リソース・パレット」のデータ・コントロール」

4. データ・コントロールからメソッドとプロパティをドラッグして、ADF JSFページにドロップします。

注意:

データ・コントロールをアプリケーションに追加する方法は、他にも2つあります。

- 「リソース・パレット」から、IDE接続を選択して、データ・コントロールにナビゲートします。データ・コントロールを右クリックして、「プロジェクトに追加」を選択します。

- 「プロジェクト・プロパティ」から、「ライブラリとクラスパス」を選択して、「ライブラリの追加」ボタンをクリックします。この方法を採用する場合は、どのJDeveloperライブラリに必要なデータ・コントロールが格納されているかを理解している必要があります。

7.2 サービスを利用するためのFrameworkアプリケーションの準備

この項では、WebCenter PortalのWebサービスを使用するようにアプリケーションを準備する場合に、実行する必要のある手順について説明します。次のサブセクションが含まれます:

- 第7.2.1項「サービスを利用するようにアプリケーションを準備する方法」

- 第7.2.2項「データベース接続の設定」

- 第7.2.3項「外部アプリケーション接続の設定」

7.2.1 サービスを利用するようにアプリケーションを準備する方法

どのアプリケーションでも、サービスを組み込むように構成できます。JDeveloperでアプリケーションを作成するときには、アプリケーションのベースにするテンプレートを選択できます。必須ではありませんが、WebCenter PortalのFrameworkアプリケーション・テンプレートを使用すると、該当するすべての接続ウィザードとタグ・ライブラリが、「新規ギャラリ」と「コンポーネント・パレット」にすぐに表示され、使用できるようになります。サービス・タスク・フローまたはコンポーネントを利用すると、必要なライブラリが自動的にプロジェクトに追加されます。

アプリケーションは、利用するサービスに応じた特定の前提条件を満たす必要があります。たとえば、サービスでユーザーのアイデンティティを認識する必要がある場合、アプリケーションでユーザー認証に一定レベルのセキュリティを提供する必要があります。

この項には次のサブセクションが含まれます:

- 第7.2.1.1項「サービスのセキュリティの実装」

- 第7.2.1.2項「サービスのSSLで保護された接続の設定」

7.2.1.1 サービスのセキュリティの実装

一部のサービスでは、ユーザーのアイデンティティを認識する必要があります(たとえば、検索サービスでは、検索の保存のためにユーザーのアイデンティティが必要になります)。これらのサービスでは、少なくともユーザーを認証するようにアプリケーションを構成して、ユーザーのカスタマイズとプリファレンス用に、ユーザーが個別のアイデンティティを持つようにする必要があります。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。

関連項目:

- Frameworkアプリケーションで基本的なセキュリティ・ソリューションを実装する方法の詳細は、第68.3項「ADFセキュリティの構成」を参照してください

- Frameworkアプリケーションに完全なセキュリティ・ソリューションを実装する方法の詳細は、第68章「WebCenter Portal: Frameworkアプリケーションの保護」を参照してください

ADFセキュリティをアプリケーション用に構成すると、jazn-data.xmlファイルを開いて、サンプル・ユーザーの権限を各タスク・フロー用に変更できます。ADFセキュリティ・ポリシー・エディタを開くには、「アプリケーション・リソース」パネルでファイルを見つけてその名前をダブルクリックするか、「アプリケーション」→「セキュア」→「リソース権限」を選択します(図7-2)。「リソース・タイプ」ドロップダウンは、表に示される権限のセットを制御します。リストから特定の権限タイプを選択することで、そのタイプの権限のみが表示されます。

図7-2 jazn-data.xmlファイル内のADFセキュリティ・ポリシー

「図7-2 jazn-data.xmlファイル内のADFセキュリティ・ポリシー」の説明

7.2.1.2 サービスのSSLで保護された接続の設定

JDeveloperでサービスの接続を設定しているときに、その接続をSSLで保護されたエンドポイントにする(信頼できる認証局の有効な証明書を使用する)場合は、それに応じて環境を準備する必要があります。

注意:

このプリファレンス設定の変更は、デフォルト・サーバーとして統合WLSを使用して作成した接続にのみ必要になります。管理対象サーバーにデプロイする場合、この設定の変更は必要ありません。

SSLで保護されたサービス接続用にプリファレンスを設定するには:

1. JDeveloperのツールバーから、「ツール」→「プリファレンス」を選択します。
「プリファレンス」ダイアログが表示されます(図7-3)。

図7-3 「プリファレンス」ダイアログ

「図7-3 「プリファレンス」ダイアログ」の説明

2. 「プリファレンス」ダイアログで、「資格証明」をクリックします(図7-4)。

図7-4 「資格証明」ペイン

「図7-4 「資格証明」ペイン」の説明

3. 「クライアントの信頼する証明書キーストア」の値を、次のように変更します。

<JAVA_HOME>/jre/lib/security/cacerts

この<JAVA_HOME>は、Javaホーム・ディレクトリの場所です。

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

7.2.2 データベース接続の設定

多くのサービスは、関連情報が格納されているデータベース・スキーマへの接続が必要になります。たとえば、リンク・サービスの場合は、リレーションシップのマッピング情報(どのオブジェクトが、どのオブジェクトにリンクされているかなど)がデータベースに格納されています。

表7-3は、データベース接続が必要になるサービスのリストです。

表7-3 関連するデータ・ソース

サービス

データ・ソース

アクティビティ・グラフ

アクティビティ

アクティビティ・ストリーム

WebCenter Portal

分析

アクティビティ

ブログ

WebCenter Portal

コメント

WebCenter Portal

コメントおよびアクティビティ・ストリームを組み込むドキュメント(Wikiとブログを含む)

WebCenter Portal

リンク

WebCenter Portal

リスト

WebCenter Portal

Oracle Portalアダプタ

PORTAL (Oracle Portalスキーマの名前)

ピープル・コネクション

WebCenter Portal

投票

WebCenter Portal

タグ

WebCenter Portal

関連項目:

- スキーマのインストールについては、第3.5項「データベース・スキーマのインストール」を参照してください

- 本番環境にアプリケーションをデプロイするときのデータ・ソースに関する考慮事項については、『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開発者ガイド』を参照してください。

図7-5 データベース接続

「図7-5 データベース接続」の説明

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

5. 「データソースへの関連付け」ダイアログで、適切なスキーマを選択します。

- 接続の名前をwebcenter/CustomPortalにしている場合は、この接続をWebCenter Portalスキーマに関連付けるように選択します。

- 接続の名前をactivities/CustomPortalにしている場合は、この接続をアクティビティ・スキーマに関連付けるように選択します。

「OK」をクリックします(図7-6)。

図7-6 接続ウィザードからのデータ・ソースへの関連付け

「図7-6 接続ウィザードからのデータ・ソースへの関連付け」の説明

データ・ソースの関連付けは、ワークスペース内の各プロジェクトに個別に適用されます。ワークスペース内に複数のWebCenter Portalプロジェクトが存在する場合、ダイアログにドロップダウン・リストが表示され、ユーザーは構成するプロジェクトを選択できます。

注意:

Oracle JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager Fusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。

詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』を参照してください。

7.2.2.1 既存のデータベース接続の関連付け

既存のデータベース接続は、その接続を右クリックして、「データソースへの関連付け」を選択することでデータソースに関連付けられます(図7-7)。

図7-7 既存の接続へのデータ・ソースの関連付け

「図7-7 既存の接続へのデータ・ソースの関連付け」の説明

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

独自の認証を処理するアプリケーションとサービスが相互作用するときには、そのアプリケーションと外部アプリケーション定義を関連付けて、資格証明プロビジョニングに備えることができます。

次のサービスは、サービスへの接続と認証の定義に外部アプリケーションを使用できます。

- ドキュメント

- イベント

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

- メール

- RSSビューア(セキュリティ保護されたRSSフィードを使用する場合)

関連項目:

- サービスに外部アプリケーションを設定する方法の詳細は、第29章「ドキュメント・サービスの統合」、第34章「インスタント・メッセージおよびプレゼンス・サービスの統合」、第35章「メール・サービスの統合」、および第52章「RSSサービスの統合」

- 外部アプリケーションの全般的な情報については、第68.13項「外部アプリケーションの使用」を参照してください

7.3 カスタム・コンポーネントによるFrameworkアプリケーションの拡張

この項では、リソース・アクション処理フレームワークの概要と、リソース・ビューアの登録方法について説明します。次のサブセクションが含まれます:

- 第7.3.1項「リソース・アクション処理フレームワークの概要」

- 第7.3.2項「リソース・ビューアの登録」

- 第7.3.3項「リソース認可プロバイダ・クラスの作成」

- 第7.3.4項「ビュー・ハンドラおよびナビゲーションの動作の指定」

7.3.1 リソース・アクション処理フレームワークの概要

カスタム・コンポーネントは、即時利用可能なサービスと同様にリソースを管理して所有します。そのため、これらのコンポーネントはそのリソースが他のサービス(検索、タグ、リンク、最近のアクティビティなどのサービス)を起動するサービスにアクセスできるようにするための宣言が必要になります。WebCenter Portalは、表示、検索、およびタグ付けの対象になるリソースを公開するカスタム・コンポーネントとサービスのために、リソース・アクション処理フレームワークを提供しています。

たとえば、リソース・アクション処理フレームワークを使用すると、検索サービスが、指定のサービスのリソースをレンダリングするメカニズムを検索し、これに従うようになります。リソース・アクション処理フレームワークのもう1つの機能は、リソースの認証の宣言とアクセス時の認証の実施を可能にすることです。

次のリソースは、リソース・アクション処理フレームワークを使用して、リソース・ビューアを起動します。

- 検索

- タグ

- リンク

- Wikiとブログ

- 最近のアクティビティ

- ピープル・コネクション

- アクティビティ・ストリーム(それ自体の起動)

- 接続(それ自体の起動)

- フィードバック(それ自体の起動)

- プロファイル(タグ、タグ付けしたアイテム、およびそれ自体の起動)

- メッセージ・ボード(それ自体の起動)

- WebCenter Portalを指す外部リンク(メール、通知、ドキュメント、RSSフィード、REST XMLなどから)

次のリソースは、リソース・アクション処理フレームワークで起動可能なタスク・フローを所有します。

- お知らせ

- ディスカッション

- ドキュメント(Wikiやブログを含む)

- イベント

- リスト

- メール

- ノート

- ページ

- ピープル・コネクション

- アクティビティ・ストリーム - メイン・ビュー

- コネクション

- フィードバック

- プロファイル

- プロファイル・ギャラリ

- メッセージ・ボード

- Spaces (/webcenter/spaces/Space1NameにマップするURLリライタ)

- タグ - タグ・センター

関連項目:

リソース・アクション処理およびリライタ・インタフェースについては、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

7.3.2 リソース・ビューアの登録

検索やタグを使用してカスタム・リソースをレンダリングできるようにする場合や、そのリソースを相互にリンクできるようにする場合には、リソース・ビューアを登録する必要があります。

service-definition.xmlファイルで、リソース・ビューアを定義すると、任意のサービスでそのサービスのリソースをレンダリングできるようになります。このビューアは、リソースIDに作用するタスク・フローまたはURLリライタになります。

たとえば、検索サービスを通じてディスカッション・フォーラムのメッセージが見つかったとします。結果のリンクをクリックすると、ディスカッション・サービスに宣言されたリソース・ビューアが(ディスカッション・サービスのservice-definition.xmlを検索することで)起動されます。デフォルトでは、ターゲットはダイアログ内でレンダリングされます。

リソース・ミニ・ビューを宣言すると、このサービスに表示されるインライン・ポップアップに使用されるリソース・ビューアを指定できます。ミニ・ビューが指定されていない場合は、インライン・ポップアップにリソース・ビューが使用されます。

注意:

サンプルのservice-definition.xmlは、Frameworkアプリケーションに含まれています。このファイルを使用すると、開発者は独自のリソース・ビューアと、リンク・サービスおよび検索サービスと対話する独自のインタフェースの実装(QueryManagerインタフェースの実装など)を宣言できます。

カスタム・リソース・ビューアを登録するには:

1. アプリケーション・ナビゲータで、プロジェクトの「ページ・フロー」ノードを右クリックして、ポップアップ・メニューから「新規」を選択します。

2. 「カテゴリ」で、「JSF」→「ADFタスク・フロー」を選択して、「OK」をクリックします。

3. 「タスク・フローの作成」ダイアログで、「ファイル名」をorder-viewer.xmlなどに変更します。タスク・フローIDが自動的にorder-viewerに更新されます(図7-8)。

図7-8 リソース・ビューアの「タスク・フローの作成」ダイアログ

「図7-8 リソース・ビューアの「タスク・フローの作成」ダイアログ」の説明

4. 「OK」をクリックします。
order-viewer.xmlファイルが..\public_html\WEB-INF内に作成されていることを確認します。

5. コンポーネント・パレットで「ADFタスク・フロー」が選択されていることを確認し、「表示」をタスク・フローにドラッグしてページ・フラグメントを作成します。

6. ページ・フラグメントの名前をorder-viewerに変更し、キャンバスの空いている領域をクリックして変更を受け入れます。

7. ページ・フラグメントにJSFFファイルを定義します。

8. ページ・フラグメントをダブルクリックします。

9. 「新規JSFページ・フラグメントの作成」ダイアログで、「OK」をクリックします。

10. エディタの「ソース」ビューに移り、jsp:root要素内にaf:outputTextタグを貼り付けます。
例7-1では、非常にシンプルなリソース・ビューアが提供されます。より複雑なビューアを作成することもできます。

例7-1 シンプルなリソース・ビューア

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:outputText value="Rendering #{pageFlowScope.resourceId}"
inlineStyle="font-size:5"/>
</jsp:root>

11. タスク・フローにresourceId入力パラメータを追加して、その値を#{pageFlowScope.resourceId}に設定します。

12. タスク・フローの定義後、service-definition.xmlファイル内に、このタスク・フローを登録する必要があります。アプリケーション・ナビゲータで「アプリケーション・リソース」、「ディスクリプタ」、「ADF META-INF」と開きます。

13. 「service-definition.xml」をダブルクリックし、エディタで開きます。

14. このファイルで、コメント・アウトされたサービス定義を見つけます。この周りの<!-- and -->タグを削除し、コメント解除します。

15. id属性をサービス識別子に設定します。
たとえば、「タグ付け」ボタンを定義するときには、サービス識別子にmycompany.myproduct.myapp.mycomponentを使用します。

16. <resource-view>要素内のtaskFlowIdを/WEB-INF/order-viewer.xml#resource-viewerに設定します。
この識別子は、タスク・フローのパスとファイル名を「タスク・フローの作成」ダイアログで宣言したタスク・フローIDと連結したものです。その他のタグは、省略してもかまいません。

17. <resource-view>宣言には、リソース認可プロバイダのクラス指定があります。これにより、リソース・ビューを指定して、どのタグ付きオブジェクトをユーザーに表示(および、検索可能に)するかを決定するための様々な方法が提供されます。

例7-2 resource-view宣言内のタスク・フローIDの指定

<resource-view taskFlowId="/somepath/somefile.xml#someId"
authorizerClass="some.service.id.Authorizer1"/>

検索サービス、タグ・サービスおよびディスカッション・サービスは、このタイプの宣言を使用します。表示ID (JSPXページ)を保持するのではなく、サービスはリソースをレンダリングするタスク・フローを提供します。

- 属性taskFlowIdは、レンダラがタスク・フローであることを意味します。

- タスク・フローは、リソースIDで指定されたリソースのレンダリングに使用されます。

- このタスク・フローは、resourceId入力パラメータを受け入れて、リソースのレンダリングに使用します。

例7-3 URLリライタ・クラス名の指定(1)

<resource-view urlRewriterClass="oracle.webcenter.framework.resource.IdentityResourceUrlRewriter"
authorizerClass="some.service.id.Authorizer5"/>

または

例7-4 URLリライタ・クラス名の指定(2)

<resource-view urlRewriterClass="oracle.webcenter.framework.resource.MessageFormatResourceUrlRewriter"
authorizerClass="some.service.id.Authorizer4">
<parameters>
<!-- This starts from the context root which would be /webcenter -->
<parameter name="message" value="/content/conn/UCM/path/{0}"/>
</parameters>
</resource-view>

または

例7-5 URLリライタ・クラス名の指定(3)

<resource-view urlRewriterClass="oracle.webcenter.framework.resource.MyResourceUrlRewriter"
authorizerClass="some.service.id.Authorizer6">
<parameters>
<parameter name="myParam" value="myValue"/>
</parameters>
</resource-view>

一部のサービスは、URLリライタを使用してリソースIDをURLとして扱い、適切な形式にURLを書き換えます。URLリライタは、リソースIDをgoLinkで起動できるURLに変換します。次の2つのResourceUrlRewritersが提供されます。

- oracle.webcenter.framework.resource.IdentityResourceUrlRewriterは、Oracle SESを使用する検索用です。これは、resourceId値をURLとしてそのまま受け入れます。

- oracle.webcenter.framework.resource.MessageFormatResourceUrlRewriterは、ドキュメント用です。これは、(service-definition内の) messageパラメータを受け入れます。messageパラメータには、resourceIdの値に置き換えられる{0}が含まれています。

urlExternalパラメータは、すべてのURLリライタに適用されます。このパラメータの値により、リソース・アクション・ハンドラのリンクを利用するJSPXで新しいウィンドウを開くかどうかが決まります。

ページやWikiなどのリソースは、リソース・ビューアを持つことができませんが、それらのリソースIDはページ表示IDとしてダビングできます(例7-6)。

例7-6 リソース・ビューアなし(ページ表示IDとしてのリソースID)

<resource-view authorizerClass="some.service.id.Authorizer3"/>

18. サービスは、例7-7に示すようなものになります。

例7-7 リソース・ビューのサンプル・サービス定義

<service-definitions>
<service-definition id="mycompany.myproduct.myapp.mycomponent"
version="11.1.1.0.0">
<resource-view taskFlowId="/somepath/somefile.xml#someId"
authorizerClass="mycompany.myproduct.myapp.mycomponent.ResourceAuthorizer"/>
<resource-type>Custom Object</resource-type>
<object-types>
<object-type name="customcomponent123"
displayName="Display Name"
description="Description"/>
</object-types>
<resource-bundle-class>mycompany.myproduct.myapp.mycomponent.resource.ComponentMessageBundle
</resource-bundle-class>
<name>My Custom Component</name>
<description>My Custom Component's Description</description>
<icon>/mycompany/myproduct/myapp/mycomponent/component.png</icon>
</service-definition>
...
</service-definitions>

19. service-definition.xmlファイルを保存します。

7.3.3 リソース認可プロバイダ・クラスの作成

リソース認可プロバイダ・インタフェースは、Javaのインタフェースとクラスを使用して、サービスのリソースに関する有用な情報を返します。たとえば、oracle.webcenter.framework.resource.ResourceAuthorizerインタフェースには、一意のリソースIDについてのステータス(使用可能または使用不可)を返すメソッドが含まれています(例7-8)。

例7-8 一意のリソースIDに対するステータスを返すメソッド

/*
* Check if the passed in resourceIds are viewable by the current user.
*
* @param resourceId - the resourceId to check
* @return - a <code>ResourceInfo</code> with a ResourceStatus
* of RESOURCE_IS_AVAILABLE if the passed in resourceId
* is viewable by current user, otherwise returns
* <code>RESOURCE_IS_NOT_AVAILABLE</code>.
*/
ResourceInfo getResourceInfo(String resourceId, Scope scope);

/*
* Check if the passed in resourceIds are viewable by the current user.
*
* @param resourceIds - the resourceIds to check
* @return - a List of <code>ResourceInfo</code> with a ResourceStatus
* of RESOURCE_IS_AVAILABLE if the passed in resourceId
* is viewable by current user, otherwise returns
* <code>RESOURCE_IS_NOT_AVAILABLE</code>.
*/
List<ResourceInfo> getResourceInfo(List<String> resourceIds, Scope scope);

oracle.webcenter.framework.resource.ResourceInfoインタフェースは、次のメソッドを公開しています。

public ResourceStatus getResourceStatus();

oracle.webcenter.framework.resource.ResourceInfo列挙型には、次の有効な値が含まれています。

例7-9 有効なResourceStatus値

/**
* Used to describe a related object's status.
*
* Certain operations may be performed by relationship service depending
* on what object status it receives from the service.  For example,
* if it receives {@link #RESOURCE_DOES_NOT_EXIST} it may remove all
* relationships associated with this object from the relationship schema
* so future calls are not wasted on this object.
*/
public enum ResourceStatus
{
/**
* Used to describe a resource that is available.
*/
RESOURCE_IS_AVAILABLE,

/**
* Used to describe a resource that does not exist.
*/
RESOURCE_DOES_NOT_EXIST,

/**
* Used when the user does not have view access on the resource.
*/
USER_DOES_NOT_HAVE_ACCESS;
}

oracle.webcenter.framework.resource.ResourceUrlRewriterインタフェースのメソッドのみが、一意の識別子が渡された後でURLを書き出します。このURLは、絶対URLになることも、所有アプリケーションのFacesコンテキスト・ルートの相対URLになることもあります。

例7-10 リソースURLリライタ・メソッド

public String rewriteUrl(String id);

7.3.4 ビュー・ハンドラおよびナビゲーションの動作の指定

独自のリソース・アクション・ビュー・ハンドラ(たとえば、現在のページの新しいタブにリソースを表示する)を作成して、ADFインライン・ポップアップを使用するか、DefaultResourceActionHandler(同じブラウザ・ウィンドウで開いて、リソースの全画面ナビゲーションを表示する)を使用してナビゲートするか、PopUpResourceActionHandler(新しいブラウザ・ポップアップ・ウィンドウを開く)を使用するかを指定します。

FrameworkアプリケーションでRAH対応のリンクまたはボタンをクリックすると、組込みのデフォルト・リソース・アクション・ビュー・ハンドラが起動されます。これにより、同じブラウザ・ウィンドウを使用してブラウザからリソースにナビゲートすることで、リソース・ビューア・タスク・フローでリソースを開きます。

この動作は、adf-config.xmlの<resource-handler>要素に、組込みのポップアップ・ビュー・ハンドラまたはカスタム・ビュー・ハンドラを指定することで変更できます。さらに、デフォルト・アクションでビュー・ハンドラを起動するか、現在のウィンドウにADFインライン・ポップアップとして表示するかを指定できます。

例7-11に、adf-config.xmlに追加するXMLを示します。このXMLでは、ビュー・ハンドラとしてMyAppResourceActionHandlerを使用し、ADFインライン・ポップアップを使用して最初にリソースを表示するように宣言しています。

例7-11 カスタム・ビュー・ハンドラの指定

<wpsC:adf-service-config
xmlns="http://xmlns.oracle.com/webcenter/framework/service">
<resource-handler
class="com.mycompany.myapp.MyAppResourceActionHandler"
display-as-popup="true" />
</wpsC:adf-service-config>

このwpsC:ネームスペースは、次のように定義されています。

xmlns:wpsC="http://xmlns.oracle.com/webcenter/framework/service"

RAHフレームワークには、DefaultResourceActionHandlerとともに、PopUpResourceActionHandlerも含まれます。これは、完全なブラウザ・ウィンドウ・ナビゲーションを実行するのではなく、ナビゲート時に新しいブラウザ・ポップアップを起動します。これは、以前のリリースのWebCenter Portalアプリケーションの動作と似ています。

例7-12に、ポップアップ・ビュー・ハンドラの指定方法を示します。

例7-12 ポップアップ・ビュー・ハンドラの指定

<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>

アプリケーションは、ResourceActionHandlerインタフェースを実装するクラスを作成するか、AbstractResourceActionHandlerベース・クラスを拡張して、adf-config.xmlの<resource-handler>のクラス属性に新しいビュー・ハンドラを指定することで、独自のリソース・アクション・ビュー・ハンドラを起動できます。次のシナリオでは、RAHリンクがクリックされたときに、カスタム・ビュー・ハンドラ・クラスを起動します。

- ADFインライン・ポップアップが使用されていません。

- 「最大化」ボタンがADFインライン・ポップアップでクリックされました。

関連項目:

カスタム・リソース・アクション・ビュー・ハンドラ(具体的には、AbstractResourceActionHandlerクラス)の作成方法については、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスでサービス・フレームワークについて参照してください

<resource-handler>タグ内のdisplay-as-popup属性では、RAHリンクのアクションの初期動作を定義します。これは、resourceActionBehaviorタグでuseResourcePopup属性にalways、neverまたはappDefinedの値を使用することで、RAHリンク自体で上書きできます。

useResourcePopupが設定されていない場合や、これがRAHリンクでappDefinedに設定されている場合は、adf-config.xmlのdisplay-as-popup属性が考慮されます。これがtrueに設定されている場合、RAHは、リソース・アクション・ビュー・ハンドラを起動するのではなく、ADFインライン・ポップアップを起動します。これにより、リソースのミニ・リソース・ビューが現在のページ内のADFインライン・ポップアップに表示されます。ユーザーは、これを閉じることも最大化することもできます。ユーザーが「最大化」ボタンをクリックすると、ポップアップが閉じてリソース・アクション・ビュー・ハンドラが起動されます。

デフォルトでは、完全なナビゲーションが意味をなさない一部のタスク・フローに対する特別な場合にのみ、FrameworkアプリケーションでADFインライン・ポップアップが使用されます。たとえば、検索結果には、リソースの作成者が含まれていることがあります。このユーザー名のリンクをクリックすると、検索結果から移動することなく、作成者の簡単なプロファイルを示すポップアップを確認できます。

これらのタスク・フローでは、resourceActionBehaviorタグで、useResourcePopupがalwaysに設定されています。これは、タスク・フローをカスタマイズすることで変更できます。

デプロイ済のアプリケーションの場合は、WLSTコマンドを使用することで、adf-config.xmlの<resource-handler設定を追加したり更新したりできます。コマンドの構文および例は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のsetWebCenterServiceFrameworkConfigに関する項と、getWebCenterServiceFrameworkConfigに関する項を参照してください。

7.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です。

図7-9に、一般的な設定の「EL式の挿入」ダイアログを示します。

図7-9 generalSettings JSFマネージドBeanの式ビルダー

「図7-9 generalSettings JSFマネージドBeanの式ビルダー」の説明

表7-4では、一般設定サービスのプリファレンス値について説明します。

表7-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設定に使用される、優先スキン名です。

たとえば、ユーザーの選択しているロケール、タイムゾーン、および書式で、現在の日付と時刻を表示するには、次のコードをページに追加します。

例7-13 ユーザーのロケールで現在の日付と時刻を表示するコード

<af:outputText value="#{generalSettings.formattedCurrentDateTime}"/>

また、特定の日付と時刻を表示するには、次のようにします。

例7-14 特定の日付と時刻を表示するコード

<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(式言語)式を追加して、そのアクセシビリティ・モードを設定する必要があります。例:

例7-15 trinidad-config.xmlでのアクセシビリティ・モードの設定

<accessibility-mode>#{generalSettings.preferredAccessibilityMode}</accessibility-mode>

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

一般設定APIを使用してユーザー・インタフェースを作成すると、ユーザーはデフォルト設定を受け入れることも、自分の目的に適った設定を適用することもできるようになります。このAPIには、表7-4に示したものと同じプリファレンス値が含まれています。

日付と時刻を表示するWebCenter Portalのサービスは、一般設定サービスで構成された設定を使用します。一般設定サービスAPIを使用してプリファレンス・ユーザー・インタフェースを作成する方法は、oracle.webcenter.generalsettingsについてのJavadocを参照してください。具体的には、oracle.webcenter.generalsettings.modelパッケージに、各設定のプリファレンス値を取得および設定するAPIが含まれています。これらのAPIを使用してカスタム・ユーザー・インタフェースを作成すると、ユーザーは各自の優先値を表示および設定できるようになります。

関連項目:

Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンス

7.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部

ポータル構造の設定

第II部の内容は次のとおりです。

- 第8章「Frameworkアプリケーションの理解」

- 第9章「WebCenter Portalのライフ・サイクルの理解」

- 第10章「ポータル用のナビゲーション・モデルの構築」

- 第11章「ポータルのルック・アンド・フィールの設計」

- 第12章「ポータルへのリソースの追加」

- 第13章「ポータル・ナビゲーションの視覚化」

- 第14章「スキンの作成および管理」

- 第15章「リソース・カタログの作成および管理」

- 第16章「リソース・マネージャの追加および使用」

8 Frameworkアプリケーションの理解

この章では、WebCenter Portal: Frameworkアプリケーションのアーキテクチャ、コンポーネントおよび機能について概説します。この章の内容は、次のとおりです。

- 第8.1項「Frameworkアプリケーションについて」

- 第8.2項「Oracle WebCenter Portal: Frameworkについて」

- 第8.3項「ポータルのライフ・サイクルについて」

- 第8.4項「WebCenter Portal: Frameworkアプリケーションの作成」

- 第8.5項「WebCenter Portal: Frameworkアプリケーションの機能の理解」

- 第8.6項「ポータルのルック・アンド・フィールの開発」

- 第8.7項「デフォルトのポータル・プリファレンスの変更」

- 第8.8項「反復およびラウンドトリップ開発手法の使用方法」

- 第8.9項「「アプリケーション・ソース」フォルダについて」

- 第8.10項「ポータルの実行およびテスト」

- 第8.11項「実行時のWebCenter Portal」

- 第8.12項「WebCenter Portalファイルの編成方法」

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

- 第8.14項「基本的なポータル開発タスク」

8.1 Frameworkアプリケーションについて

WebCenter Portal: Frameworkアプリケーションはポータルです。エンド・ユーザーから見ると、ポータルは、タブなどのナビゲーション・フォームで編成されたページを持つWebサイトです。各ページには、階層的に関連したサブページのネストを含めることができます。どのページにも複数のポートレット、タスク・フローやその他の要素を含めることができるので、ユーザーは1箇所で様々な情報やツールにアクセスできます。管理者は、新しいページの追加、ルック・アンド・フィールの変更などにより、実行時にポータルを変更できます。委任管理により権限が与えられている場合、個々のユーザーはポータルのビューの変更もできます。

図8-1にポータルの例を示します。ここには、ナビゲーション(タブ、ブレッドクラム、リンク)、コンテンツ(ポートレット、タスク・フロー、イメージ)、管理機能などが含まれています。

図8-1 WebCenter Portal: Frameworkアプリケーションの例

「図8-1 WebCenter Portal: Frameworkアプリケーションの例」の説明

ポータルのエンド・ユーザーは、ポータル・ページのパーソナライズされたビューも表示できます。パーソナライズされたビューとは、そのユーザーについて収集された情報に基づいたコンテンツで変更されたビューのことです。たとえば、書籍販売サイトでユーザーが最近数冊の探偵小説を購入したことを覚えていて、次回そのサイトにログインした際には、その情報に基づいて類似の探偵小説を推奨したりします。第66章「WebCenter Portalアプリケーションのパーソナライズ」を参照してください。

ポータルでは、整合性のとれたWebベースの統合インタフェースを使用して、種々のコンテンツとアプリケーションがユーザーに表示されます。ポータルの管理者とユーザーはポータルをカスタマイズでき、ユーザー・プリファレンスやパーソナライズに基づいてコンテンツを表示できます。各ポータルは、Web上でのポータルの実行に必要なすべてのリソースを備えたWebアプリケーションに関連付けられています。

図に示されているように、ポータルの一部の主要要素には、ページやサブページ、ナビゲーション、委任管理とその他のセキュリティ機能、実行時カスタマイズおよびパーソナライズが含まれています。

ポータルには通常、次の機能も備わっています。

- 検索: エンタープライズおよびWebベースの検索機能

- コンテンツの統合: Oracle WebCenter Contentなどのエンタープライズ・コンテンツ管理システムとの統合によるコンテンツの作成、管理、およびポータルへの配信。

- シングル・サインオン: これにより、ユーザーは一度でポータル内のすべてのアプリケーションにログオンできます。

- ルック・アンド・フィールの管理: これにより、開発者はカスタム・ページのテンプレートを作成でき、ユーザーはポータルのカスタマイズに様々なスキンを適用できます。ポータルには、ルック・アンド・フィールをポータル内で確実に整合性のとれたものにするツールが備わっています。

8.2 Oracle WebCenter Portal: Frameworkについて

Oracle WebCenter Portal: Frameworkにより、ページ階層やナビゲーション・モデルなどのポータル固有の多くの機能がFrameworkアプリケーションに追加されます。この項では、その詳細を説明します。

- 第8.2.1項「Oracle WebCenter Portal: Frameworkをプロジェクトに追加する方法」

- 第8.2.2項「Oracle WebCenter Portal: Frameworkが提供する機能について」

8.2.1 Oracle WebCenter Portal: Frameworkをプロジェクトに追加する方法

WebCenter Portal: Frameworkアプリケーション・テンプレートを使用してFrameworkアプリケーションを作成すると、フレームワークが自動的に組み込まれます。これ以上の手順は不要です。第5.2項「Frameworkアプリケーションの作成」も参照してください。

注意:

非ポータルFrameworkアプリケーションのFrameworkアプリケーションへの移行は、サポートされていません。

8.2.2 Oracle WebCenter Portal: Frameworkが提供する機能について

Oracle WebCenter Portal: Frameworkにより、多くのポータル固有の機能がFrameworkアプリケーションに追加されます。WebCenter Portal: Frameworkアプリケーション・テンプレートを使用して新しいアプリケーションを作成する場合には、これらの機能がデフォルトで備わっています。第5.1項「アプリケーション・テンプレートとは」も参照してください。

このフレームワークで提供される基本機能は次のとおりです。

- ページ階層: 従来のADFページ・セキュリティでは、ページごとにページ・セキュリティを管理できました。しかし、ポータルには通常多くのページが含まれており(場合によっては数百ページに及ぶこともある)、個別ページへのアクセスの指定は必ずしも実用的ではありません。ページの階層は、ページ間の親子関係により、ページをツリー構造に編成します。この階層構造により、ページからサブページにセキュリティ設定を簡単に伝播または継承することが可能になります。第8.5.1項「ページ、ページ・テンプレートおよびポータルのページ階層の理解」を参照してください。

- ナビゲーション・モデル: ナビゲーション・モデルは、ポータルに表示されるナビゲーション・ユーザー・インタフェースにバックエンド・データを提供します。ナビゲーション・モデルは、ページ、タスク・フロー、外部サイト、ポートレットおよび特定のコンテンツ・アイテムへのナビゲーションを制御する幅広いAPIを備え、柔軟性が非常に高くなっています。このようなAPIにより、ナビゲーション・ユーザー・インタフェースをレンダリングする方法をすべての面において管理できます。たとえば、ポータル・ページやページ・テンプレートに簡単なEL式を記述すると、ツリー・ナビゲーションUIを追加できます。また、WebCenterではナビゲーション・モデルの構成および変更のための実行時ツールも提供しています。第8.5.3項「ナビゲーション・モデルおよびナビゲーション・レジストリの理解」を参照してください。

- ナビゲーション・レジストリ: ナビゲーション・レジストリは、ユーザーがリソース・マネージャを使用して、実行時にナビゲーションに追加できる一連の要素を定義します。第16章「リソース・マネージャの追加および使用」および第10章「ポータル用のナビゲーション・モデルの構築」も参照してください。

- 委任管理: 委任管理は、ユーザー・ロールに基づいてポータル・リソースを保護するメカニズムを提供します。たとえば、1つのロール(マネージャなど)のユーザーにすべてのポータル機能へのアクセスを許可し、それ以外のロール(従業員など)のユーザーには特定の機能へのアクセスを拒否できます。ページ階層は、委任管理ではプライマリ・コンテナになります。設計時および実行時のどちらの環境においても、ページ階層に委任管理を適用すると、特定のセキュリティ割当てがページとサブページの階層に自動的に伝播されます。第68章「WebCenter Portal: Frameworkアプリケーションの保護」を参照してください。

- カスタマイズ: ユーザーは、ポートレットの追加や削除、スキンの変更、ポータルのレイアウトの際配置などにより、独自のポータル・ページをカスタマイズできます。第16章「リソース・マネージャの追加および使用」を参照してください。

- ページ・テンプレート – ページ・テンプレートにより、ページ全体のレイアウトを定義してページに適用し、ポータル全体で一貫したレイアウトを作成できます。テンプレートを使用してページを作成すると、すべてのページで定義済のレイアウトが継承されます。詳細は、第11章「ポータルのルック・アンド・フィールの設計」を参照してください。『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のページ・テンプレートの使用に関する項も参照してください。

- カタログおよびカタログ・レジストリ: カタログは、タスク・フロー、ポートレット、コンテンツ・アイテム、および実行時にアプリケーションに追加できるその他の要素の任意のコレクションです。カタログ・レジストリは、リソース・カタログに含めることができる一連のアイテムを定義します。第15章「リソース・カタログの作成と管理」を参照してください。

- スキン: スキンは、ポータル内のルック・アンド・フィールを整合させるためにアプリケーション・コンポーネントの色、フォント、イメージ、および高さや幅など一部のディメンションの詳細を定義します。第14章「スキンの作成および管理」を参照してください。

- ポータル・プリファレンス: デフォルトのナビゲーション・モデル、ページ・テンプレート、その他のコンポーネントなどポータル向けのデフォルト・プリファレンスを変更できます。第8.7項「デフォルトのポータル・プリファレンスの変更」を参照してください。

JDeveloperには、ポータル開発用のツールが備わっています。このツールには、ページ階層の作成および変更用エディタ、ナビゲーション・モデル、カタログおよびカタログ・レジストリ、ページ・テンプレート、ページ・スタイル、スキン、委任管理などがあります。さらに、実行時ツールが提供され、これによりエンド・ユーザーと管理者はこれらの機能の一部を実行できます。第8.11.2項「実行時WebCenter Portal管理コンソール」も参照してください。

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

ポータルのライフ・サイクルとは、開発から本番サーバーへのデプロイメントまでのポータルを作成する過程のことです。このライフ・サイクルには、ソフトウェア開発者、コンテンツ・モデラー、コンテンツ・コントリビュータ、IT管理者、ポータル・サイト管理者などの多くの人々が関与します。ポータルのライフ・サイクルにおける全ステージの管理に関する詳細は、第9章「WebCenter Portalのライフ・サイクルの理解」を参照してください。

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

WebCenter Portal: Frameworkアプリケーション・テンプレートを使用して、JDeveloperで新しいフレームワーク・アプリケーションを作成します。アプリケーション・テンプレートはJDeveloperの標準機能で、ポータル・テンプレートでは必要なポータルのコンポーネントと機能でアプリケーションを構成するだけで済みます。

ヒント:

Frameworkアプリケーション・テンプレートは、基本的に旧バージョンのWebCenterのFrameworkアプリケーション・テンプレートと同じですが、特定のポータル固有の機能が追加されています。さらに、これらのポータル機能の他に、Frameworkアプリケーションにはタスク・フロー、データ・コントロール、セキュリティ機能、ADF Faceレイアウト・コンポーネントなどの従来のFrameworkアプリケーションに備わっていたすべての機能が含まれます。

Frameworkアプリケーション作成の基本的な手順は、5項「Frameworkおよびポートレット・プロデューサ・アプリケーションの作成」を参照してください。

8.5 WebCenter Portal: Frameworkアプリケーションの機能の理解

この項では、理解しておく必要のあるポータルの主な機能について説明します。

- 第8.5.1項「ページ、ページ・テンプレートおよびポータルのページ階層の理解」

- 第8.5.2項「ポータルのページの保護」

- 第8.5.3項「ナビゲーション・モデルおよびナビゲーション・レジストリの理解」

- 第8.5.4項「リソース・カタログおよびカタログ・レジストリの理解」

- 第8.5.5項「その他の設計時フォルダ」

- 第8.5.6項「さらに高度な開発ユース・ケースのヒント」

8.5.1 ページ、ページ・テンプレートおよびポータルのページ階層の理解

この項では、Oracle WebCenter Portal: Frameworkの3つの関連項目である、ページ、ページ・テンプレート、およびページ階層について説明します。

ポータルは1ページ以上で構成されており、ページはポータルの構造や編成において重要な役割を果たします。通常、ページはタスク・フロー、ポートレット、コンテンツなどの1つ以上のエンティティのコンテナです。また一般に、ページにはナビゲーション・ツリー、タブ、ブレッドクラムなどのナビゲーション・インタフェースが含まれます。Frameworkアプリケーションでは、oracle/webcenter/portalapp/pagesフォルダの下にあるポータル・プロジェクトに一連のデフォルト・ページが格納されています(図8-2を参照)。これらのページは編成上の理由で配置されていますが、新しいページについては必ずしもこのページ・フォルダ下に作成する必要はありません。

注意:

Frameworkアプリケーションのファイルの編成の詳細は、第8.12項「WebCenter Portalファイルの編成方法」を参照してください。

注意:

ページ階層で使用されるページは、oracle/webcenter/portalappの下に配置する必要があります。

図8-2 pagesフォルダの内容

「図8-2 pagesフォルダの内容」の説明

ページ・テンプレートを使用すると、全ページにわたって共通にするビュー要素を指定できます。ページ・テンプレートとは、ADFレイアウト・コンポーネントやその他の要素を含むJSPXファイルのことです。一般に、ページ・テンプレートは、ヘッダー、フッターおよびコンテンツ領域によりページ・レイアウトを定義します。また、ページ・テンプレートでは、通常、ページのナビゲーションUIの配置とスタイルを指定します。たとえば、すべてのページに同じタブのセットを入れる場合や、各ページにツリー・ナビゲーション・パネルとブレッドクラムを表示する場合には、テンプレートにこれらのコンポーネントを追加できます。

ヒント:

ページ・テンプレートは、それを使用するページによって参照されます。基礎となるページ・テンプレートを変更すると、そのテンプレートを参照するすべてのページで自動的に変更内容が継承されます。

ページ・テンプレート・フォルダは、図8-3に示されているように、oracle/webcenter/portalapp/pagetemplatesにあります。このフォルダには、すぐに使用できるデフォルトのページ・テンプレートが2つ格納されています。

図8-3 pagetemplatesフォルダの内容

「図8-3 pagetemplatesフォルダの内容」の説明

ページ階層とは、一連の親子関係によってページを配置する論理的な構造で、ここではどのページでも1ページ以上のサブページを含むことができます。この階層モデルはポータルの構造全体の定義に使用できるだけでなく、子ページにその親に指定されているセキュリティ・ポリシーを継承させることもできます。各階層にセキュリティ・ポリシーを伝播するページの機能は、ページごとにセキュリティを設定する必要がないため、数十ページまたは数百ページもの非常に大型のポータルには特に便利です。新しいページを作成すると、それがページ階層内で格納された場所に基づいて、そのセキュリティ・ポリシーが自動的に設定されます。

ページ階層ファイルは、図8-4に示されているように、oracle/webcenter/portalapp/pagehierarchyにあります。

図8-4 pagehierarchyフォルダの内容

「図8-4 pagehierarchyフォルダの内容」の説明

注意:

ページ階層ファイルは、ページ階層構造を定義するメタデータが含まれるXMLファイルです。これらのファイルを直接編集することはお薦めしません。次に説明するように、ページ階層エディタを使用して、ページ階層の作成や操作を行ってください。

基本的なページ階層モデルは、WebCenter Portal: Frameworkアプリケーション・テンプレートで作成されたアプリケーションに含まれています。JDeveloperでページ階層エディタを使用してページ階層を変更できます。このエディタにアクセスするには:

1. 図8-4に示すアプリケーション・ナビゲータで、ポータル・プロジェクトを開きます。

2. pagehierarchyフォルダを右クリックします。

3. メニューから「ページ階層の編集」を選択します。

ヒント:

ページ階層エディタは、ポータル・ページ・ファイル(JSPXファイル)を右クリックしてメニューから「ページ階層の編集」を選択するか、ページ階層ファイルを直接開いても起動できます。

ポータルにページを作成した後、エディタを使用してサイト構造を作成します。アプリケーション・ナビゲータのoracle/webcenter/portalappフォルダ内の任意の場所からページ階層エディタにページをドラッグ・アンド・ドロップして(一度に1ページまたは数ページ)、希望する階層に配置できます。

または、階層ペインの上に配置された「追加」ボタンを使用できます。このボタンをクリックすると、プロジェクト内からページを選択できるダイアログがポップアップ表示されます。このページは、図8-5に示されているように、現在エディタで選択されているページの子として追加されます。

図8-5 ページのページ階層への追加

「図8-5 ページのページ階層への追加」の説明

エディタでは、ツリー表示内のページ・ノードをドラッグ・アンド・ドロップで簡単に再配置できます。階層が大きい場合には、階層内のページを右クリックして「親ページの変更」を選択し、「親ページの変更」ダイアログを使用すると便利です。このダイアログを使用すると、選択済ページの新しい親を個々のウィンドウから選択でき、大きすぎて一度に表示できない階層内をスクロールする必要がなくなります。

ヒント:

ページ階層エディタのノードを右クリックし、「ページに移動」を選択して関連付けられているJSPX(ポータル・ページ)ファイルを開きます。

注意:

ページ階層内に作成する新しい各レベルには、pagehierarchy/pages/*Pages.xmlファイルが作成されます。これらのファイルには、そのレベル内のページ参照が記載されています。詳細は、第68.6.2項「ページ階層の構築」を参照してください。

図8-6に、最上位レベルのページ、「Benefits」(福利厚生)、「Careers」(キャリア)、「Payroll」(給与)および「Location」(場所)を含む単純な人事管理サイトの構造を示します。「Benefits」、「Careers」および「Location」の各ページには、複数の子ページがあります。

図8-6 ページ階層エディタ

「図8-6 ページ階層エディタ」の説明

ポータルを実行すると、この階層は図8-7に示すように表示されます。この例では、ナビゲーション・バーが表示されるデフォルトのページ・テンプレートが使用されています。このバーは、ページでタブのようなリンクとしてレンダリングされます。このナビゲーションUIは、ページ・テンプレートに追加されたため、そのテンプレートを使用するすべてのページに同様に表示されるようになります。デフォルトのナビゲーション・コンポーネント以外に、ナビゲーション・ツリー、ブレッドクラム、ページ・テンプレートへのナビゲーションUIのその他のスタイルなどを追加できます。多くの場合、テンプレートには2つ以上のナビゲーション・コンポーネントが含まれます。

ページ・テンプレートの詳細は、第11章「ポータルのルック・アンド・フィールの設計」を参照してください。デフォルトのナビゲーション・モデルおよびナビゲーション・モデルとユーザー・インタフェースの作成の詳細は、第10章「ポータル用のナビゲーション・モデルの構築」を参照してください。

図8-7 ポータル・ナビゲーション・バー

「図8-7 ポータル・ナビゲーション・バー」の説明

ページ階層の詳細は、第68.6.2項「ページ階層の構築」を参照してください。

8.5.2 ポータル・ページの保護

注意:

第5.6項「Frameworkアプリケーションのセキュリティはデフォルトでどのように構成されるか」も参照してください。

設計時に、ページ階層エディタでポータルのページにセキュリティを設定できます。前述のとおり、ページ階層ではページ間(親子)の構造的関係が定義されているため、子ページがその親のセキュリティ・ポリシーを継承できます。

注意:

ADFページ・セキュリティ・モデルまたは階層構造のWebCenter Portalページ・セキュリティ・モデルで、ページを保護できます。ページのページ階層への追加は、ページが階層セキュリティ・モデルにより保護されることを意味します。第68.6項「ページ階層セキュリティ・エディタの使用」も参照してください。

図8-8に示すように、ページ階層エディタには、ページに関するロールベースのセキュリティ・ポリシーを指定する「セキュリティ」セクションがあります。このセキュリティ・インタフェースによって、ポリシーを継承するか委任するかを決定できます。継承を指定すると、そのページのセキュリティ・ポリシーがその親ページから継承されます。セキュリティを委任すると、そのポリシーが親のセキュリティより優先され、セキュリティを継承しているすべての子ページにそのポリシーが伝播されます。

ヒント:

小さな南京錠のアイコンが横に表示されているページは、継承されたセキュリティの設定が上書きされます。つまり、委任されたセキュリティが指定されているページを示す際にこのアイコンが表示されます。

たとえば、図8-8では、Payrollページは、管理者がページに完全にアクセスできるように構成されますが、ページの表示やパーソナライズが可能なのは認証されたユーザーのみです。匿名ユーザーは、このページにはまったくアクセスできません。第8.5.3項「ナビゲーション・モデルおよびナビゲーション・レジストリの理解」で、ページへのセキュリティ・ポリシーの設定方法に応じて、ナビゲーションUIの表示も影響を受けることについて説明します。この例では、「Payroll」ページを使用できるのが管理者と認証されたユーザーのみであるため、ナビゲーションUIは認証されたユーザーと管理者にのみ「Payroll」ページへのリンクを表示します。その他のすべてのユーザーには、「Payroll」リンクは表示されません。

図8-8 Payrollページのセキュリティ設定

「図8-8 Payrollページのセキュリティ設定」の説明

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

ナビゲーション・モデルとページ階層を区別することは重要です。最初に、ページ階層では、ページ間の親子関係を指定します。以前に説明したように、ページは1つ以上の子ページを保有できます。次に、ページ階層では、階層を縦断して親ページから子ページ(サブ・ページ)に継承されるセキュリティ・ポリシーを考慮します。ページ階層のみがページ間の関係を指定することに注意してください。タスク・フロー、ポートレットおよび外部リンクなどの他のリソースをページ階層に含めることはできません。

ページ階層では、管理者が大量のページを備えたポータルのセキュリティを容易に制御できるセキュリティ継承モデルが提供されます。たとえば、100ページのポータルの場合、ページ階層のルートにセキュリティ・ポリシーを指定すると、100ページすべてがそのポリシーを継承します。次に、ルートの下のページの設定を変更する場合、変更した設定がそのページのすべてのサブページに伝播します。また、継承された設定を無視して、階層の任意の場所にある個々のページにセキュリティ設定を適用することもできます。

それに対して、ナビゲーション・モデルはナビゲーションの構造を定義し、ナビゲーション・データを記録し、アプリケーションのビュー・レイヤーにそのデータを提供します。ページ階層はページのみで構成されているのに対して、ナビゲーション・モデルはタスク・フロー、ページ、外部リンクなどの多様なリソースで構成できます。

ここで重要なのは、ナビゲーション・モデルが制御する要素(ページ、リンク、タスク・フローなど)に適用されるセキュリティ・ポリシーをナビゲーション・モデルが認識している点です。認証されたユーザーに特定のページを表示する権限がない場合、デフォルトでは、ナビゲーション・モデルはそのページへのナビゲーション・リンクをすべて非表示にします。ポータルで定義されたセキュリティを備えていないリソース(外部リンクなど)には、開発者が手動で表示を制御する必要があります。それを実行する1つの方法として、リソースの表示を制御する(表示/非表示)際に、ページまたはページ・テンプレートにEL式を追加する方法があります。詳細は、第13章「ポータル・ナビゲーションの視覚化」を参照してください。

たとえば、ポータル・ページにナビゲーションUIが含まれる場合、そのUIはナビゲーション・モデルに、ユーザーがどのページまたはその他の要素にナビゲートできるか、ポータルの現在のナビゲーション状態は何かなどについて問い合せます。最初の質問では、UIが表示できるリンクを通知します。2番目の問合せでは、そのリンクの表示方法をUIに通知します。ナビゲーション・ビューがツリーの場合、モデルはUIに現在選択されているページなどを通知します。これにより、ツリーUIは、開いているフォルダ、選択されたページなどとして、そのページを正確に表すノードを表示できます。

JDeveloperでは、ナビゲーション・エディタを使用してナビゲーション・モデルを変更します。エディタを開くには、図8-9に示すように、navigationsフォルダでdefault-navigation-model.xmlファイルをダブルクリックします。

図8-9 navigationsフォルダのコンテンツ

「図8-9 navigationsフォルダのコンテンツ」の説明

navigation-registry.xmlファイルは、ユーザーがナビゲーション・モデルを作成または編集する際にリソース・マネージャで使用します。レジストリは、作成または変更するモデルに含められるすべてのアイテムのスーパーセットを定義します。1つのアプリケーションに対して複数のナビゲーション・モデルを作成できますが、1つのアプリケーションが持つことのできるナビゲーション・レジストリ・ファイルは1つのみです。ナビゲーション・モデル、ナビゲーション・エディタおよびレジストリの詳細は、第10章「ポータル用のナビゲーション・モデルの構築」を参照してください。

図8-10に示すように、デフォルトのナビゲーション・モデルには、「ページ階層」というノードが含まれています。デフォルトでは、このノードはpagehierarchyフォルダ内のデフォルトのページ階層ファイルpages.xmlを指します。このノードはナビゲーション・モデルにページ階層構造を参照するように指示し、ナビゲーションUIがレンダリングされるようにその構造をナビゲーションUIに伝えます。前述の図8-7に示されているように、デフォルトUIはページ階層をタブのようなリンクで表示します。このモデルが提供する情報により、各リンクにマウス・ポインタを置くとドロップダウン・メニューにサブページのリンクが表示されます。

図8-10 デフォルトのナビゲーション・モデル

「図8-10 デフォルトのナビゲーション・モデル」の説明

ナビゲーション・モデルには数種類のナビゲーション要素を含めることができます。これまでの説明のとおり、モデルにはページ階層と単独ページの両方を含めることができます。また、外部Webページや特定のコンテンツへのリンクなど、その他の要素へのナビゲーションも作成できます。

図8-11 ナビゲーション・モデルへのリンクの追加

「図8-11 ナビゲーション・モデルへのリンクの追加」の説明

詳細は、第10章「ポータル用のナビゲーション・モデルの構築」を参照してください。

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

カタログでは、レイアウト・コンポーネント、タスク・フロー、ポートレット、ドキュメントなど、権限のあるユーザーが実行時に追加できる関連性のない他の要素グループの集まりを指定します。Oracle WebCenter Portalのコンポーザは、実行時にカタログを使用して、権限のあるユーザーがポータル・ページに追加できる要素を判別します。

Frameworkアプリケーション・テンプレートには、デフォルトのリソース・カタログ(default-catalog.xml)およびカタログ・レジストリ・ファイル(catalog-registry.xml)が含まれています。これらのファイルは、oracle/webcenter/portalapp/catalogsにあります。

ユーザーが実行時にコンポーザを使用してページを編集すると、デフォルトのカタログ・ファイルは、ページに追加できるすべてのアイテムを指定します。カタログ・レジストリ・ファイルは、ユーザーがリソース・カタログを作成または編集する際にリソース・マネージャで使用します。レジストリは、作成または変更するカタログに含められるすべてのアイテムのスーパーセットを定義します。

1つのアプリケーションに対して複数のカタログを作成できますが、1つのアプリケーションが持つことのできるカタログ・レジストリ・ファイルは1つのみです。詳細は、第15章「リソース・カタログの作成および管理」を参照してください。

開発時に、リソース・カタログ・エディタを使用して既存のカタログを編集できます。このエディタを開くには、図8-12に示すように、アプリケーション・ナビゲータのcatalogsフォルダ内にあるカタログ・ファイル(default-catalog.xmlなど)を開きます。

新規カタログを作成するには、「ファイル」メニューから「新規」を選択します。「新規ギャラリ」ダイアログで、「Web層」ノードの下の「ポータル」を選択します。次に、「アプリケーション・リソース・カタログ」を選択して「OK」をクリックします。「アプリケーション・リソース・カタログの作成」ダイアログを使用して、新規カタログを作成します。

ヒント:

リソース・カタログ・エディタを使用して、ナビゲーション・レジストリを編集することも可能です。

図8-12 catalogsフォルダの内容

「図8-12 catalogsフォルダの内容」の説明

図8-13にリソース・カタログ・エディタを示します。

図8-13 JDeveloperのリソース・カタログ・エディタ

「図8-13 JDeveloperのリソース・カタログ・エディタ」の説明

図8-14に実行時管理ツールのリソース・カタログ・エディタを示します。

図8-14 実行時のリソース・カタログ・エディタ

「図8-14 実行時のリソース・カタログ・エディタ」の説明

たとえば、複数の部署のそれぞれに個別のカタログを作成できます。

ヒント:

個々のカタログ・エントリはユーザーのロールに基づいて表示/非表示にできます。

8.5.5 その他の設計時フォルダ

設計時にアプリケーション・ナビゲータに表示される、その他のフォルダは次のとおりです。

- images: ページ・テンプレートが参照するイメージが格納されています。

- WEB-INF: Webアプリケーションが使用する構成ファイルが格納されています。これらのファイルは、通常、すべてのADFベースのWebアプリケーションに見られる典型的なファイルです。

- Page Flows: adfc-config.xml構成ファイルが格納される、もう1つの標準ADFフォルダです。

8.5.6 さらに高度な開発ユース・ケースのヒント

デフォルトでは、複数のファイルがアプリケーション・ナビゲータのビューから除外されています。これらのファイルが除外されているのは、ファイルを編集する必要がほとんどないためです。ただし、そのようなファイル編集を行うユース・ケースがいくつかあるため、ファイルをJDeveloper UIに追加しなおせるようにしておく必要があります。

除外されたファイルを配置するには:

1. プロジェクト・フォルダを右クリックし、メニューから「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで、「プロジェクトのソース・パス」ノードの「Webアプリケーション」を選択します。

3. 図8-15に示すように、「除外」タブを選択します。

図8-15 「除外」タブ

「図8-15 「除外」タブ」の説明

4. 除外リストから要素を選択し、「削除」をクリックして除外リストから削除します。これで、目的の要素がアプリケーション・ナビゲータの該当するフォルダに自動的に追加されます。

例では、navigation-renderer.jspxファイルを使用して、ページ・テンプレートに即してリソースをレンダリングします。外部URLをページ内で表示する方法を変更する場合、まず除外リストからnavigation-renderer.jspxを削除すると、アプリケーション・ナビゲータのpagesフォルダの下にこれが表示されるようになります。次に、そのページを開き、必要に応じて編集します。

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

バナー、ナビゲーション、フッターなどコンテンツ領域周りの特定の表示要素を追加して、ルック・アンド・フィールを設計できます。ポータル構造に適したルック・アンド・フィールを決めると、その設定をページ・テンプレートとして保存して、ポータル作成時に使用できます。さらに、同じ設定をポータル内のページ全体で使用できます。ページ・テンプレートとページ・スタイルを使用すると、ポータル内のページがある程度統一できます。第11章「ポータルのルック・アンド・フィールの設計」を参照してください。

ポータルのカスタム・スキンも開発できます。スキンは、アプリケーション全体に対して1箇所に指定されるCSS 3.0構文に基づいたスタイルシートです。アプリケーションの各コンポーネントに対してスタイルシートを用意したり、各ページにスタイルシートを挿入するのではなく、アプリケーション全体に対して1つのスキンを作成できます。各コンポーネントで自動的に、スキンで記述されているスタイルが使用されます。スキンを使用すると、外観を変更するために、設計時にポータル・ページを変更する必要がなくなります。第14章「スキンの作成および管理」を参照してください。

基本的なルック・アンド・フィールの設計は設計時にJDeveloperで作成できますが、管理者や適切なアクセス権限を持つユーザーはリソース・マネージャを使用して、アプリケーションがデプロイされた後もポータルのルック・アンド・フィールの開発を続行できます。たとえば、リソース・マネージャを使用して、ページの追加と削除、ナビゲーション・ユーザー・インタフェースの追加、ページ・テンプレート、スキンおよびページ・スタイルの変更などを実行できます。これらおよびその他のリソース・マネージャ機能の詳細は、第16章「リソース・マネージャの追加および使用」を参照してください。

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

Frameworkアプリケーションには、ポータルの特定のデフォルト・コンポーネントを指定する一連のプリファレンスが用意されています。この項では、そのプリファレンスとデフォルト値の変更方法について説明します。

8.7.1 デフォルトのポータル・プリファレンスとは

表8-1に、ポータルのプリファレンスとそのデフォルト設定を示します。

表8-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

8.7.2 設計時におけるデフォルト・プリファレンスの変更方法

設計時にデフォルト・プリファレンスを変更するには、adf-config.xmlファイルを直接編集します。このファイルをJDeveloperで見つけるには、アプリケーション・ナビゲータの「アプリケーション・リソース」部分を開きます。次に、図8-16に示すように、「ディスクリプタ」フォルダおよびADF META-INFフォルダを開きます。

図8-16 JDeveloper内でのadf-config.xmlファイルの場所

「図8-16 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管理者ガイド』のアプリケーションのデフォルトの構成に関する項を参照してください。

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

反復開発とは、開発プロセスを促進できる生産性の機能のことです。反復開発では、統合WebLogic ServerでFrameworkアプリケーションを実行しながら、JDeveloperでこのアプリケーションに変更を加えて保存し、ブラウザの現在のページをリフレッシュするだけで、その変更の効果を確認することができます。Frameworkアプリケーションでは、反復開発機能はデフォルトで有効になっています。詳細は、第1.5.3項「反復開発の有効化」を参照してください。

ラウンドトリップ開発とは、メンテナンスや拡張のため、デプロイされた実行時ポータルからJDeveloperにリソースを戻すことができる機能および技法です。JDeveloperでリソースを編集した後、リソース・マネージャを使用して、デプロイされたポータルにリソースをアップロードし直すことができます。WebCenter Portalのラウンドトリップ開発機能は、アプリケーション全体を再度デプロイすることなくポータル・リソースを変更する、簡単で便利な方法を提供します。

ラウンドトリップ開発の詳細は、第16.3項「ポータルの実行時管理の有効化」および第16.4項「リソースのラウンドトリップ開発の有効化」を参照してください。

8.9 「アプリケーション・ソース」フォルダについて

「アプリケーション・ソース」フォルダは、ポータルを作成する際にJDeveloperで生成される2つの最上位ポータル・プロジェクト・フォルダの1つとして表示されます。アプリケーションに対して記述するJavaクラスの他に、「アプリケーション・ソース」に含まれる内容は次のとおりです。

- oracle.webcenter.portalapp: ページ、ページ・テンプレート、ページ・カタログ、ナビゲーションのXML定義ファイルが格納されています。ページ定義ファイルは、ADFバインディング、ページ・パラメータおよび権限の設定を指定します。ページ定義ファイルは、ページやページ・テンプレートに使用される様々なマッピングおよびバインディングを指定します。たとえば、ページ定義ファイルはページの親および子ページがある場合、それらを指定します。また、ページで許可されている操作などの、セキュリティ・ポリシー情報も指定します。デフォルトのページ定義ファイルは、ポータルのページをページ階層に追加すると、自動的に作成されます。

- portal: リソース・バンドル、ソース・コードおよびその他のJavaアーティファクトが含まれます。

- META-INF: データ・バインディングとページ・テンプレート・メタデータを指定するファイルが格納されています。

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

JDeveloperには、次のようなアプリケーションを実行する方法が備わっています。

- アプリケーション・マネージャでポータルのプロジェクト名を右クリックして、図8-17に示すように「実行」を選択します。サーバーが稼働していない場合、この操作でサーバーが起動し、アプリケーションが(再)デプロイされます。

ヒント:

デフォルトのポータル・ホーム・ページを変更できます。詳細は、第8.13項「デフォルトのホーム・ページおよびログイン/ログアウト・ターゲット・ページの変更」を参照してください。

図8-17 ポータルの実行

「図8-17 ポータルの実行」の説明

- アプリケーション・マネージャのページ・フォルダにあるページを右クリックして、図8-17に示すように「実行」を選択します。サーバーが稼働していない場合、この操作でサーバーが起動し、アプリケーションが(再)デプロイされ、選択したページが表示されます。

図8-18 ページの実行

「図8-18 ページの実行」の説明

- 「実行」メニューから、「<portal name>の実行」を選択しても、ポータルを実行できます。

8.11 実行時のWebCenter Portal

Oracle WebCenter Portal: Frameworkには、多くの興味深い実行時機能が用意されています。

- 第8.11.1,項「統合WebLogic Serverでの実行時カスタマイズの保持」

- 第8.11.2項「実行時WebCenter Portal管理コンソール」

- 第8.11.3項「セキュリティ設定の実行時ポータルへの影響」

- 第8.11.4項「ポータル・リソースの実行時の編集」

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

統合WebLogic Serverを開発環境(JDeveloperを介してポータルを実行)で使用する場合、デフォルトでは実行時(リソース・マネージャを使用)のポータルに対する変更は再デプロイメントの際に破棄されます。たとえば、リソース・マネージャを使用してページに対する資格の追加、レイアウトの変更、ナビゲーション・モデルの変更などを実行した場合、その変更はアプリケーションを次に再デプロイしたときに保持されません。リソース・マネージャの詳細は、第16章「リソース・マネージャの追加および使用」を参照してください。

注意:

この項の情報は、開発環境で統合WebLogic Serverとともに実行するポータルに対してのみ適用されます。ポータルを本番環境にデプロイする際には、実行時の変更が破棄されることはありません。

注意:

JDeveloper環境で作業する開発者の便宜を考慮して、カスタマイズはデフォルトでは保持されません。実行時にファイルを変更すると、新しいバージョンのファイルがMDS書込みディレクトリに書き込まれます。すると、この新規バージョンが、JDeveloper内で最優先バージョンとなります。その時点で、JDeveloperで設定を変更し、ブラウザで「リフレッシュ」をクリックしても、変更は表示されません。したがって、JDeveloperで作業する際には、実行時のカスタマイズを保持しない方が便利で自然です。

デフォルトの動作を変更し、実行の間に実行時のカスタマイズを保持することは可能です。たとえば、特定のテスト用シナリオを有効にする際に、そのようにできます。アプリケーションのデプロイメント(実行)間にカスタマイズを保持できるようにするには:

1. 「アプリケーション」メニューから、「アプリケーション・プロパティ」を選択します。

2. 「アプリケーション・プロパティ」ダイアログで、「実行」ノードの下の「MDS」を選択します。

3. 「ディレクトリ・コンテンツ」で、「アプリケーションの実行間でカスタマイズを維持」を選択し、デフォルト(各実行前にカスタマイズが破棄される)を無効にします。詳細は、図8-19を参照してください。

図8-19 「アプリケーションの実行間でカスタマイズを維持」の選択

「図8-19 「アプリケーションの実行間でカスタマイズを維持」の選択」の説明

8.11.2 実行時WebCenter Portal管理コンソール

WebCenter Portal管理コンソールを使用すると、リソース、サービス、セキュリティおよびポータルの構成について作業できます。WebCenter Portal管理コンソールは、URL(http://<server>:<port>/<context_root>/admin)にあり、図8-20に示されています。

図8-20 WebCenter Portal管理コンソール

「図8-20 WebCenter Portal管理コンソール」の説明

ヒント:

WebCenter Portal管理コンソールのデフォルトのURLを変更するには、web.xmlファイル内の<servlet-mapping>要素の<url-pattern>属性を編集します。デフォルトの<url-pattern>はadminですが、必要に応じて別のものに変更できます。

「リソース」タブ(リソース・マネージャ)の詳細は、第8.11.4項「ポータル・リソースの実行時の編集」および第16章「リソース・マネージャの追加および使用」を参照してください。セキュリティの詳細は、第68章「WebCenter Portal: Frameworkアプリケーションの保護」を参照してください。

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

ロール・ベースのセキュリティ・ポリシーは、ビジターが表示および操作(作成、削除、更新など)できるページ、リソースおよびナビゲーション要素を制御します。設計時(JDeveloper)ページ・エディタでは、第8.5.2項「ポータルのページの保護」で説明するように、ページまたはページ階層でこれらのポリシーを設定できます。Oracle WebCenter Portal: Frameworkでは、次の方法でこれらのセキュリティ・ポリシーを順守します。

- ページ(およびタスク・フローなどその他の特定のリソース)は、表示する権限を持つユーザーのみに表示されます。同じ原理が、権限付与、作成、削除、更新、パーソナライズなど、ユーザーがページ上で実行できる操作に対して保持されます。

- リソース(ページ、タスク・フローなど)へのナビゲーションは、認証ユーザーがそのページを使用できない場合、非表示になります。たとえば、「Payroll」ページへのアクセスが許可されていないユーザーの場合、そのページへのリンクはすべてのナビゲーション・ユーザー・インタフェースで表示されません。

- リソース・カタログ内で使用できるリソースは、セキュリティ・ポリシーに応じて調整されます。タスク・フローなどの特定のリソースに対するアクセス権を持たないユーザーの場合、そのリソースはリソース・カタログに表示されません。

8.11.4 ポータル・リソースの実行時の編集

WebCenter Portal管理コンソールには、次のようなポータル固有の機能を実行時に使用可能にする「リソース」タブが表示されます。

- ページ

- ページ・テンプレート

- ナビゲーション・モデル

- リソース・カタログ

- スキン

- ページ・スタイル

- コンテンツ・プレゼンタ表示テンプレート

- マッシュアップ・スタイル

- データ・コントロール

- タスク・フロー

ポータル・ユーザーは、リソース・マネージャを使用して、リソースまたはアプリケーション全体を実行時環境からダウンロードし、JDeveloperで編集して、デプロイ済アプリケーションにアップロードして戻すこともできます。リソースのダウンロードおよびアップロードの詳細は、第16.3項「ポータルの実行時管理の有効化」および第16.4項「リソースのラウンドトリップ開発の有効化」を参照してください。

リソース・マネージャの「ソースの編集」機能により、ランタイム・アプリケーションでリソースのソース・コードを編集できます。たとえば、ポータル・リソース(ページ・テンプレートなど)をアップロードすると、リソース・マネージャで直接それを編集できます。それには、リソースを選択して「編集」メニューから「ソースの編集」を選択します。図8-21に示すように、ソース編集ウィンドウが表示されます。

注意:

default-navigation-modelなどの一部のリソースは編集できません。これらのリソースを編集するには、まずコピーし、そのコピーを編集します。

図8-21 実行時のページ・テンプレート・ソース・ファイルの編集

「図8-21 実行時のページ・テンプレート・ソース・ファイルの編集」の説明

8.12 WebCenter Portalファイルの編成方法

Frameworkアプリケーション・ウィザードを実行すると、大量のプロジェクト・アーティファクトが構成され、プロジェクト・ディレクトリにインストールされます。JDeveloperでは、プロジェクトの合理化されたビューが表示されます。ポータル・プロジェクトは、ファイルシステムで直接確認することもできます。

- 第8.12.1項「WebCenter Portal: Frameworkアプリケーションの編成の理解」

- 第8.12.2項「ファイルシステムでのポータル・プロジェクトの表示」

- 第8.12.3項「JDeveloperでのポータル・プロジェクトの表示」

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

この項では、Frameworkアプリケーションの編成方法とその理由について説明します。

8.12.1.1 WebCenter Portal: Frameworkアプリケーションの編成方法

JDeveloperで新しいFrameworkアプリケーションを作成すると、自動的に大量のファイルがプロジェクトに配置されます。JDeveloperの「アプリケーション・ナビゲータ」ビューに、編成されたこれらのファイルが表示されます。

アプリケーション・ナビゲータを見ていくと、図8-22に示すように、まずFrameworkアプリケーションが1つのプロジェクト(デフォルトでPortalと呼ばれる)で構成されていることがわかります。当然、この名前は、アプリケーションの作成時やその後いつでも変更できます。プロジェクト内のファイルは、ほとんどが<application_root>/<project_root>/public_html/oracle/webcenter/portalappディレクトリにあります。

図8-22 「アプリケーション・ナビゲータ」のWebCenter Portal: Frameworkアプリケーション

「図8-22 「アプリケーション・ナビゲータ」のWebCenter Portal: Frameworkアプリケーション」の説明

8.12.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ファイルにデプロイされます。

- ポータル・リソースとして登録できないため、リソース・マネージャで管理できません。

- アーティファクトのネイティブの権限クラスで保護されます。

Frameworkアプリケーションがこのように構造化されているため、自分のページを作成する際に十分な情報を得た上で決定できるということを理解することが重要です。場合によっては、特にJSPXページを使用して、oracle/webcenter/portalappでページを作成しないことがあります。それは、アプリケーションでのページの使用目的に応じて変わります。

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

プロジェクト・ファイルをファイル・システムに配置する最も簡単な方法は、アプリケーション・ナビゲータでファイルまたはフォルダを選択し、「編集」メニューから「パスのコピー」を選択します。この機能では、ファイルやフォルダへのパスがクリップボードに配置されるので、それをコマンド・シェルやファイル・ブラウザに貼り付けられます。

図8-23にサンプルFrameworkアプリケーションのファイルシステムの編成を示します。プロジェクトのファイルの多くは、public_htmlフォルダの下に編成されます。

図8-23 ファイルシステム上のWebCenter Portal: Frameworkアプリケーションの例

「図8-23 ファイルシステム上のWebCenter Portal: Frameworkアプリケーションの例」の説明

見てわかるように、JDeveloperでは多少異なる、より合理化されたビューが提供されます。詳細は、次の第8.12.3項「JDeveloperでのポータル・プロジェクトの表示」を参照してください。

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

JDeveloperのプロジェクト・ビューでは、開発者が使用しそうなプロジェクト・ファイルが表示されます。これらのファイルには、ページ、ページ階層、ナビゲーション・モデル、ページ・テンプレート、カタログ、XML構成ファイル、Javaソース・ファイル、イメージなどがあります。

JDeveloperでは、ポータル・プロジェクトは図8-24に示すように、「アプリケーション・ソース」および「Webコンテンツ」の2つのフォルダに編成されます。

図8-24 JDeveloperでのポータル・プロジェクトの編成

「図8-24 JDeveloperでのポータル・プロジェクトの編成」の説明

「アプリケーション・ソース」フォルダは、主に、ソース・コードおよびページ定義ファイルのリポジトリです。第8.9項「「アプリケーション・ソース」フォルダについて」も参照してください。

「Webコンテンツ」フォルダには、ページ、ページ階層、ナビゲーション・モデルなどWebプロジェクトを構成するすべてのファイルが格納されています。これらは、Frameworkアプリケーションを開発する際に積極的に作成および変更できるファイルです。

図8-25は、「Webコンテンツ」フォルダの基本的な構造を示しています。作成および変更するファイルの多くは、oracle/webcenter/portalappサブ・フォルダに格納されています。フォルダの内容(カタログ、ナビゲーション、ページ階層、ページ、スキンおよびページテンプレート)により、ポータルの基本的なコンポーネントが構成されます。これらのポータル・コンポーネントの詳細は、第8.12.1項「WebCenter Portal: Frameworkアプリケーションの編成の理解」を参照してください。

図8-25「Webコンテンツ」フォルダ

「図8-25「Webコンテンツ」フォルダ」の説明

ヒント:

アプリケーション・ナビゲータでローカルのファイル・システムの階層を表示するには、「プロジェクト」パネルの「ナビゲータの表示オプション」アイコンをクリックして「ディレクトリでグループ化」を選択します。

PortalWebAssetsプロジェクトには、HTMLやイメージ・ファイルのような静的アプリケーション・リソースが含まれます。静的リソースを個々のプロジェクトに分離することによって、これらのリソースを専用サーバーにデプロイすることが可能となります。詳細は、第5.4項「PortalWebAssetsプロジェクトの理解」を参照してください。

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

oracle/portalapp/pages/home.jspxファイルは、新しいFrameworkアプリケーションのデフォルトのホーム・ページです。この項では、デフォルトのホーム・ページを別のページ、またはURL、ポートレット、タスク・フローなどのナビゲート可能なリソースに変更する方法を説明します。

- 第8.13.1項「ホーム・ページの指定方法の理解」

- 第8.13.2項「デフォルトのホーム・ページの変更方法」

- 第8.13.3項「デフォルトの索引ページの指定方法」

- 第8.13.4項「ログインまたはログアウト後のターゲット・ページの指定」

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

デフォルトのFrameworkアプリケーションには、index.htmlファイルがあり、これはポータル・プロジェクト・ディレクトリに格納されています。この索引ファイルには、次のリダイレクト文が記述されています。

<meta http-equiv="refresh" content="0;url=./faces/pages_home" />

注意:

index.htmlのリダイレクト文は、期待するページではなく、ポータル・ナビゲーション・モデルを参照します。リダイレクトがナビゲーション・モデルを指しているため、currentSelection属性が適切に設定され、現在の選択項目がユーザー・インタフェースで強調表示されます。

URL要素pages_homeは、ページ階層で指定された"home"ページを参照します。(一意のIDとなるように、接頭辞"pages_"をフォルダ名に追加します。)図8-26に示すように、「ナビゲーション」ダイアログで「フォルダの内容の挿入」チェック・ボックスが選択されています。「フォルダの内容の挿入」オプションにより、指定されたフォルダ(この場合、"home")がフォルダの内容に置換されます。したがって、この例では、ポータルはページ階層内の"home"というフォルダを検索します。また、ページ階層はナビゲーション・モデルでは要素として指定されます。

デフォルトのポータル・ホーム・ページの指定方法を理解できるよう、ナビゲーション・モデルではデフォルトでpagesというデフォルト・ノードが作成されます。このノードのナビゲーション・パスは、図8-26に示すように、ページ階層ファイルのpages.xmlを指しています。

図8-26 デフォルトのナビゲーション・モデル

「図8-26 デフォルトのナビゲーション・モデル」の説明

pages.xmlへのナビゲートの際、homeというノードが検索されます。そのノードのパスは、図8-27に示すように、/oracle/webcenter/portalapp/pages/home.jspxです。

図8-27 デフォルトのページ階層

「図8-27 デフォルトのページ階層」の説明

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

デフォルトのホーム・ページを変更するには、index.htmlのリダイレクト文をナビゲーション・モデルで参照される別のリソースのプリティURLに変更します。たとえば、新しいホーム・ページを作成してそれを共通のユース・ケースにリダイレクトするとします。新しいホーム・ページを自分のホーム・ページに指定するには、index.htmlのリダイレクトを新しいページのプリティURLに変更します。(ページのリンク要素を作成するには、ナビゲーション・モデルで新しいページをドラッグします。)たとえば、ナビゲーション・モデルのリンクIDがTheHomePageの場合には、次のようにします。

<meta http-equiv="refresh" content="0;url=./faces/TheHomePage" />

ここでは、.faces/TheHomePageがプリティURLであり、これはナビゲーション・モデルで指定したリンク要素を指します。

図8-28 新しいホーム・ページ要素によるナビゲーション・モデル

「図8-28 新しいホーム・ページ要素によるナビゲーション・モデル」の説明

この例では、ブラウザでのポータルへのアクセスは次のURLを使用します。

http://myserver:myport/MyPortalApp-Portal-context-root

図8-29に示すように、このポータルでは新しいホーム・ページからのコンテンツが記載されたホーム・ページがレンダリングされています。

図8-29 ポータル・ホーム・ページのコンテンツとして表示されたOracle Webサイト

「図8-29 ポータル・ホーム・ページのコンテンツとして表示されたOracle Webサイト」の説明

8.13.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>

あるいは、「実行構成の編集」の「デフォルト」ダイアログ・ボックスを使用してデフォルトの索引ページを変更する方法もあります。このダイアログにアクセスするには、プロジェクトのプロパティ・ダイアログを開き、「実行/デバッグ/プロファイル」オプションを選択します。「編集」をクリックして、図8-30に示すように、デフォルトの索引ページを変更できる、「実行構成の編集」の「デフォルト」ダイアログを表示します。

図8-30 「実行構成"Default"の編集」ダイアログ

「図8-30 「実行構成"Default"の編集」ダイアログ」の説明

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

ログインまたはログアウト後にターゲット・ページを指定するには、例8-1に示すように、ポータル・プロジェクトのWebContent/WEB-INF/faces-config.xml構成ファイルで<navigation-rule>要素を編集します。ターゲット・ページを別のナビゲーション・リソースのプリティURLまたはFacesページに変更できます。

例8-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>

正常なログアウト後に、ユーザーは指定されたページにリダイレクトされます。

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

この項では、Frameworkアプリケーションの開発に関係する基本的なタスクの一部を示します。

- ソース・コントロール、共通データベースおよび共通コンテンツ・リポジトリを使用して、統合チーム開発環境を設定します。

- WebCenter Portal: Frameworkアプリケーション・テンプレートを使用して、Frameworkアプリケーションを作成します。

- ポータルを構成する最上位ページおよびサブ・ページの概要を作成して、ポータルの構造全体を設計します。

- ポータルのセキュリティを考慮します。ユーザーにアクセスを許可するページを決定します。これらの決定に対応する適切なロールを作成します。

- ポータル全体のルック・アンド・フィールについての検討を開始し、ページ・テンプレートで作業を開始します。

- ポータルに含めるWebCenter Portalのサービスを検討します。たとえば、Wiki、ブログ、アクティビティ・ストリームなどを追加するかどうかを検討します第2.4項「Oracle WebCenter Portal: Servicesの概要」を参照してください。

- ポータル全体の構造に基づいてページを作成します。この時点ではページは空白ですが、ページを作成するとページ階層を作成できるようになります。

- ページ階層エディタを使用して、ページ階層を作成します。

- ナビゲーション・モデルを作成します。ユーザーがナビゲートできるリソースの種類を検討します。たとえば、ページ、外部URL、タスク・フロー、コンテンツ・フォルダなどについて検討します。

- ナビゲーションUIをページ・テンプレートに追加します。Oracle WebCenter Portal: Frameworkでは、ナビゲーションUIの複数のオプションが用意されています。最も一般的に使用されるオプションは、ページ・テンプレートで直接ELを使用するというものです。また、WebCenterにはナビゲーション・タスク・フローおよびナビゲーション用Java APIが用意されています。

- ページ階層にセキュリティ・ポリシーを適用します。階層のルート・ノードにポリシーを適用して開始します。これらのポリシーは、階層内のすべてのページに継承されます。次に、個々のページまたは階層全体のサブブランチでセキュリティ設定を調整します。

- ページ自体に対し、ポートレット、タスク・フロー、コンテンツ、その他の機能の追加および構成を行います。

9 WebCenter Portalのライフ・サイクルの理解

この章では、WebCenter Portal: Frameworkアプリケーションをライフ・サイクルを通して管理するためのタスク、ツールおよびテクニックを説明します。

- 第9.1項「WebCenter Portalのライフ・サイクルについて」

- 第9.2項「主要なライフ・サイクル・タスクについて」

- 第9.3項「ポータルのライフ・サイクルへの参加者」

- 第9.4項「構築環境およびテスト環境の理解」

- 第9.5項「ステージング環境および本番環境の理解」

- 第9.6項「ライフ・サイクルを管理するツール」

- 第9.7項「夜間ビルド・スクリプトの構成」

- 第9.8項「ステージング環境または本番環境の初期設定」

- 第9.9項「WebCenter Portal: Frameworkアプリケーションの既存環境への移動」

- 第9.10項「管理対象サーバーへのデプロイ」

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

- 第9.12項「WebCenter Portalのパーソナライズのファイルの構築とデプロイ」

- 第9.13項「ステージングから本番に伝播させる伝播ツールの使用」

- 第9.14項「Oracle WebCenter Contentからのコンテンツの伝播」

- 第9.15項「ライフ・サイクルを通したセキュリティの管理」

- 第9.16項「ポートレット・プリファレンスの移行」

- 第9.17項「本番サイトの変更のロールバック」

9.1 WebCenter Portalのライフ・サイクルについて

ポータルのライフ・サイクルとは、ポータルの開発から本稼働までの過程を表します。ライフ・サイクルのフェーズには、通常、開発、テスト、ステージングおよび本稼働が含まれます。各フェーズでは特定のタスクを実行する必要があります。コンテンツ・リポジトリの設定など、一部のタスクは一度だけ実行します。その他のタスクは、夜間ビルドなどで頻繁に実行されます。ポータルのライフ・サイクルのフェーズについては、表9-1で説明しています。

表9-1 ポータルのライフ・サイクルのフェーズ

ライフ・サイクル・フェーズ

主要なアクター/ロール

説明

開発

- 開発者

- コンテンツ・モデラー

- コンテンツ・コントリビュータ

開発ポータルは主にソース・コントロールであり、ファイルベースです。開発者はJDeveloperでローカルの作業をし、統合WebLogic Serverにデプロイします。開発ポータルは、通常、テストのデータとコンテンツを使用します。ライフ・サイクルのこのフェーズで開発される機能の一部は、次のとおりです。

- ポートレット

- タスク・フロー

- 共有ライブラリ

- スキン

- ナビゲーション・モデル

- ページ・テンプレート

- 表示テンプレート

- コンテンツ・モデル

- データ転送とポートレット間通信

- セキュリティ

開発環境からのコードは、(通常夜間に)ビルドされ、クリーンで独立したターゲット環境にデプロイされます。WebCenterには、この目的に適応できるビルド・スクリプトが用意されています。第9.7項「夜間ビルド・スクリプトの構成」を参照してください。

テスト

- 開発者

- QAエンジニア

- IT管理者

開発ポータルは、(通常夜間に)ビルドされ、独立したテスト環境にデプロイされます。テスト環境には、通常、Metadata Service (MDS)とデータベース・ベースのポリシー・ストア、および専用のOracle WebCenter Contentインスタンスが含まれています。

テスト環境には、本番ポータルには組み込まれないテスト・データやテスト・コンテンツが含まれることもあります。

ポートレット・プロデューサは、テスト環境と開発環境で共有される場合もあります。ただし、使用負荷が高い場合には、個別インスタンスの作成をお薦めします。

ステージング

- サイト・マネージャ

- IT管理者

- コンテンツ・コントリビュータ

ステージング環境では、ポータルが本番に移行する前に最終的な構成およびテストが行われる安定した環境が提供されます。コンテンツ・コントリビュータはコンテンツを追加して、ポータルの構造を調整します。

一般に、ステージング環境には、専用のOracle WebCenter Contentサーバーおよび専用のポートレット・プロデューサ・サーバーが含まれます。ステージング・サーバーは、通常、本番サイトのミラーとして保持されます。

本番

- サイト・マネージャ

- IT管理者

- コンテンツ・コントリビュータ

本番ポータルはライブで、エンド・ユーザーも使用できます。本番ポータルは、リソース・マネージャ、Oracle WebCenter Portalのコンポーザなどのツールで変更できます。たとえば、管理者はポータルにポートレットをさらに追加したり、ポータルのコンテンツを再構成できます。

適切な権限を持った個々のユーザーは、ビューをカスタマイズすることも可能です。『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』を参照してください。

WebCenterでは、メタデータを本番環境に移行する伝播ツールが用意されています。第9.13項「ステージングから本番に伝播させる伝播ツールの使用」を参照してください。

コンテンツは、Oracle WebCenter Contentレプリケーション・ツールを使用してプロビジョニングされます。第9.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。

WebCenterでは、ポートレット・プリファレンスをインポートおよびエクスポートするためのWLSTコマンドを用意しています。詳細は、第9.16項「ポートレット・プリファレンスの移行」を参照してください。

9.2 主要なライフ・サイクル・タスクとは

ライフ・サイクルの各フェーズでは、特定のタスクを実行するアクター(開発者、管理者、コンテンツ・コントリビュータなど)が必要です。ここでは、ポータルのライフ・サイクルの各フェーズで実行されるタスクの種類の概要を示します。

- 第9.2.1項「1回かぎりの設定タスク」

- 第9.2.2項「開発環境のタスク」

- 第9.2.3項「夜間ビルド環境のタスク」

- 第9.2.4項「テスト環境のタスク」

- 第9.2.5項「ステージング環境のタスク」

- 第9.2.6項「本番環境のタスク」

9.2.1 1回かぎりの設定タスク

開発、ビルド/テスト、ステージングおよび本番の各環境を設定するには、特定の準備手順を実行する必要があります。表9-2に、これらの予備設定タスクおよびそれを適用する環境のリストを示します。第9.7項「夜間ビルド・スクリプトの構成」および第9.8項「ステージング環境または本番環境の初期設定」も参照してください。

表9-2 一般的な1回かぎりの設定タスク

設定タスク

開発

ビルド/テスト

ステージング

本番

JDeveloperのインストール

はい

いいえ

いいえ

いいえ

Oracle WebCenter Portalのインストール

はい

はい

はい

はい

Oracle WebLogic Serverのインストール(ドメインおよび管理対象サーバーの作成)

いいえ

はい

はい

はい

RCUによる必要なデータベース・スキーマの作成

いいえ

はい

はい

はい

Oracle WebCenter Contentのインストールおよび構成

はい

はい

はい

はい

Oracle Access Managerなどのアイデンティティ管理コンポーネントのインストール

いいえ

はい

はい

はい

ポリシー・ストアでの必要なOracle Platformセキュリティ・サービス・ポリシーの作成

いいえ

はい

はい

はい

資格証明ストアでの必要なユーザー資格証明の作成

いいえ

はい

はい

はい

バックエンド・サーバーへの接続の作成

はい

はい

はい

はい

ビルド・スクリプトの作成

はい

いいえ

いいえ

いいえ

デプロイおよび構成スクリプトの作成

いいえ

いいえ

はい

はい

WebCenter Portalのパーソナライズの統合/構成

はい

はい

はい

はい

* WebCenter Portalのパーソナライズの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWebCenter Portalのパーソナライズの管理に関する項および第66章「WebCenter Portalアプリケーションのパーソナライズ」を参照してください。

環境の初期設定のもう1つのテクニックは、既存のインスタンスのクローニングです。通常、これはステージング・インスタンスから本番インスタンスをクローニングする際に使用します。この「テストから本番へ」の手法の詳細は、『Oracle Application Server管理者ガイド』のテスト環境から本番環境への移行に関する項を参照してください。

9.2.2 開発環境のタスク

開発環境では、各開発者にはローカルのJDeveloperインスタンスがあり、これがソース・コントロール・システムおよび共有Oracle WebCenter Contentリポジトリに接続されています。開発者はメタデータとコードをソース・コントロールに保存します。ポートレットは個々にプロデューサ・サーバーにデプロイされ、ポータルで使用されます。

開発環境では、開発者は通常、統合WebLogic Serverを使用してアプリケーションをローカルに構築し、実行します。ローカルの開発環境では、MDSおよびポリシー・ストアはどちらもファイルベースです。

詳細は、第1章「開発者向けクイック・スタート・ガイド」、第3章「開発環境の準備」および第4章「チームでの効率的な作業」を参照してください。

9.2.3 夜間ビルド環境のタスク

通常、開発者はJDeveloperで作業してコード変更をローカルに統合WebLogic Serverで実行します。コード変更はソース・コントロール・システムにチェックインされます。

毎日夜間にビルドされるクリーンな環境を作成するビルド環境を設定する場合には、各ビルドについて次のような特定のタスクを実行する必要があります。

- スキーマの作成(通常、Oracleリポジトリ作成ユーティリティ(RCU)を使用)

- ドメインの作成および設定

- 管理対象サーバーの作成および構成

- アプリケーションのデプロイ

WebCenterには、環境に対して変更および使用できるビルド・スクリプトのサンプルが用意されています。第9.7項「夜間ビルド・スクリプトの構成」を参照してください。夜間ビルドは、通常、QAエンジニア、テクニカル・ライター、マネージャなどの組織内の人間が使用できます。第9.4項「構築環境およびテスト環境の理解」も参照してください。

WebCenter Portalのパーソナライズの開発環境への統合については、第66.2項「アプリケーションへのパーソナライズの統合」を参照してください。

9.2.4 テスト環境のタスク

通常、テスト環境はQAエンジニアがアクセスする夜間ビルド環境のミラーです。クリーンなテスト環境の提供に関与するタスクは、通常、クリーンなビルド環境の作成と同じです。第9.4項「構築環境およびテスト環境の理解」も参照してください。

9.2.5 ステージ環境のタスク

実行時ツールは、開発環境よりもステージング環境でさらに大きな役割を果たします。ただし、開発の更新をステージ環境に対して不定期にデプロイする必要があります。これらがさらに断続的な更新になるように、WebCenterでは、使用環境に合せてコピーと変更が可能なデプロイおよび構成スクリプトのセットを備えています。デプロイおよび構成スクリプトは、環境間の変数である情報(サーバー名、ポート、コンテンツ管理接続など)を区分けします。詳細は、第9.5.1項「ステージング環境のプロビジョニング」および第9.11項「ターゲットのサーバーでのアプリケーションのデプロイおよび構成」を参照してください。

パーソナライズの統合および構成については、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWebCenter Portalのパーソナライズの前提条件に関する項を参照してください。

9.2.6 本番環境のタスク

ステージング環境で変更をテストして承認したら、これらを本番環境にプッシュする必要があります。WebCenterでは、WebCenter Portal管理コンソールに、すべてのポータルのメタデータをステージングから本番サーバーに移行する伝播ツールが用意されています。詳細は、第9.13項「ステージングから本番に伝播させる伝播ツールの使用」を参照してください。

WebCenterでは、ポートレット・プリファレンスをインポートおよびエクスポートするためのWLSTコマンドを用意しています。詳細は、第9.16項「ポートレット・プリファレンスの移行」を参照してください。

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

様々な人がポータルのライフ・サイクルに関与します。一般に、これらの人々(表9-1の主要なアクター)は、次の1つ以上の一般的なロールに分類されます。

- 開発者: JDeveloperおよび第9.7項「夜間ビルド・スクリプトの構成」で説明するビルド・スクリプトを使用します。

- IT管理者: 第9.11項「ターゲットのサーバーでのアプリケーションのデプロイおよび構成」で説明するデプロイおよび構成スクリプトを使用します。

- サイト・マネージャ: Frameworkアプリケーションに対する管理権限を持っています。サイト・マネージャはWebCenter Portal管理コンソールを使用して、ポータルのレイアウト、コンテンツおよびセキュリティ設定を変更します。『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』および第9.15項「ライフ・サイクルを通したセキュリティの管理」を参照してください。

- コンテンツ・モデラー: Oracle WebCenter ContentのSite Studioデザイナを使用してコンテンツをモデリングします。詳細は、Site StudioおよびOracle WebCenter Contentのドキュメントを参照してください。

- コンテンツ・ディストリビュータ: イメージ、ドキュメント・ファイル、ビデオおよびオーディオ・コンテンツなど、ポータルに表示される、またはポータルから使用できるすべてのコンテンツを開発します。

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

開発者は通常、ローカルにビルドして実行しますが、自動的に夜間に実行されるビルド環境をお薦めします。ビルド環境とは、Frameworkアプリケーションのクリーンなデプロイメントを意味します。

ビルド環境を設定するには、一度バックエンド・サーバーおよび接続をインストールして作成する必要があります。たとえば、ビルド環境にはWebLogic Serverインスタンスが必要で、通常、インストールされたOracle WebCenter Contentインスタンスへのアクセスが含まれます。さらに、ビルド環境にはデータベースに基づくMDSとポリシー・ストアが含まれます。

図9-1に、構築する開発からテスト環境への一般的なフローを示します。

注意:

図9-1は、考えられるすべてのポータル機能を表してはいません。たとえばWebCenter Portalのパーソナライズはこの図には描かれていません。詳細は、第9.12項「WebCenter Portalのパーソナライズのファイルの構築とデプロイ」を参照してください。

図9-1 構築する開発からテスト環境へのフロー

「図9-1 構築する開発からテスト環境へのフロー」の説明

Antベースのビルド・スクリプトを使用して、ソース・コントロールからEARを構築してデプロイする方法が一般的です。EARには、メタデータ、コードおよびシード済ポリシーが含まれます。また、ビルド・スクリプトは、ポートレットに対して行われたカスタマイズをEARメタデータにパッケージ化します。第9.7項「夜間ビルド・スクリプトの構成」を参照してください。夜間ビルドで実行されるタスクには、次のようなものがあります。

- スキーマの作成(RCUを使用)

- 管理対象サーバーおよびドメインの設定

- EARの構築およびデプロイ

- その他の設定タスクの実行

ベスト・プラクティスとして、Oracle WebCenter Contentアーカイブ・ツールを使用して、Oracle WebCenter Contentのテスト・コンテンツとWebアセットを環境間で移動します。第9.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。ポートレットのデプロイについては、第61章「ポートレット・プロデューサのデプロイ」を参照してください。

WebCenter Portalのパーソナライズの開発環境への統合については、第66.2項「アプリケーションへのパーソナライズの統合」を参照してください。

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

この項では、ポータルのライフ・サイクルのステージング・フェーズおよび本番フェーズについて説明します。図9-2に、ステージング環境から本番環境への一般的な流れを示します。

注意:

図9-2は、考えられるすべてのポータル機能を表してはいません。たとえばWebCenter Portalのパーソナライズはこの図には描かれていません。詳細は、第9.12項「WebCenter Portalのパーソナライズのファイルの構築とデプロイ」を参照してください。

図9-2 ステージング環境から本番環境への流れ

「図9-2 ステージング環境から本番環境への流れ」の説明

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

ステージング環境では、ポータルが本番に移行する前に最終的な構成およびテストが行われる安定した環境が提供されます。一般に、ステージング環境には、専用のOracle WebCenter Contentサーバーおよび専用のポートレット・プロデューサ・サーバーが含まれます。一般的な設定タスクは、表9-2を参照してください。

初めてステージング環境を設定する場合には、第9.8項「ステージング環境または本番環境の初期設定」を参照してください。ステージング環境への増分変更の詳細は、第9.11項「ターゲットのサーバーでのアプリケーションのデプロイおよび構成」を参照してください。

必要な場合は、Oracle WebCenter Contentアーカイブ・ツールを使用して、Oracle WebCenter ContentのコンテンツとWebアセットをテスト環境とステージング環境との間で移動できます。第9.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。ポートレットの移行については、第9.16項「ポートレット・プリファレンスの移行」を参照してください。

パーソナライズの要件、依存性およびオプションの全リストは、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWebCenter Portalのパーソナライズの前提条件に関する項を参照してください。

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

コンテンツ開発者は、Oracle WebCenter Contentコンテンツ・コントリビューション・ツールやドキュメント・サービスを使用して、コンテンツをステージング・サーバーに直接追加できます。Oracle WebCenter Contentのコンテンツ・ワークフロー機能を使用して、コンテンツの承認を管理できます。また、WebCenterにはコンテンツの作成および編集用の実行時ツールが備わっています。たとえば、次のことが可能です。

- 既存のOracle WebCenter Contentのリージョン・データ・ファイルの編集

- 新規Oracle WebCenter Contentのリージョン・データ・ファイルの作成

- 既存のHTMLコンテンツの編集

- 新規イメージのアップロード

さらに、ドキュメント・サービスではHTMLコンテンツやその他のファイル・タイプのフォルダベースの作成および編集ができます。第29章「ドキュメント・サービスの統合」も参照してください。

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

ステージング環境は、プロビジョニングおよびテストが完了すると、本番環境に移行してユーザーがアクセスできるようになります。ライブ本番環境では、自動スクリプトやレプリケーション・テクニックを使用してメタデータ、コンテンツ、Webアセットに対する増分更新を実行できます。

通常、そのような更新は個々のコンテンツ・ディストリビュータではなく、サイト・マネージャが実行します。詳細は、第9.13項「ステージングから本番に伝播させる伝播ツールの使用」を参照してください。

コンテンツ・モデルやリージョン定義の変更は、サイト・マネージャにより本番サーバーにプッシュされます。Oracle WebCenter Contentレプリケーションを使用して、ステージングおよび本番サーバー間でコンテンツをレプリケートできます。第9.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。

WebCenterでは、ポートレット・プリファレンスをインポートおよびエクスポートするためのWLSTコマンドを用意しています。詳細は、第9.16項「ポートレット・プリファレンスの移行」を参照してください。

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

WebCenter PortalはJDeveloperおよびOracle ADFの上に構築されます。そのため、アプリケーションのライフ・サイクル管理では、次のような利点があります。

- 開発フレームワーク: JDeveloperおよびOracle ADFには、アプリケーションの構築および更新に使用できるツールとフレームワークが備わっています。Frameworkアプリケーションへのポートレット、コンテンツおよびカスタマイズ機能の追加は、目的のオブジェクトをソースまたはWYSIWYG環境にドラッグ・アンド・ドロップするだけで済みます。

- 反復開発: WebCenterには、チームの生産性を大きく向上させる反復開発機能が備わっています。第1.5項「反復開発の準備」を参照してください。

- ラウンドトリップ開発: ラウンドトリップ開発とは、メンテナンスや拡張のため、デプロイされた実行時ポータルからJDeveloperにリソースを戻すことができる機能および技法です。ラウンドトリップ開発の詳細は、第16.3項「ポータルの実行時管理の有効化」および第16.4項「リソースのラウンドトリップ開発の有効化」を参照してください。

- エンタープライズ・デプロイメント: アプリケーションを本番環境にデプロイする準備ができたら、WebCenterで提供されるデプロイメント・スクリプトを使用できます。詳細は、第9.11項「ターゲットのサーバーでのアプリケーションのデプロイおよび構成」と第9.13項「ステージングから本番に伝播させる伝播ツールの使用」を参照してください。デプロイメントの詳細は、第69章「WebCenter Portal: Frameworkアプリケーションのデプロイおよびテスト」を参照してください。

注意:

WebCenter Portal: Servicesでは、通常、Oracle WebCenter Portalのディスカッション・サーバーのようなバックエンドが開発環境で使用できる必要があります。

- 規格に基づいた管理: ブラウザベースのツールにより、管理者はFrameworkアプリケーションとWebCenter Portal: Servicesをデプロイ、構成および管理できます。さらに、業界標準に基づいたJMXメソッドで構築されたツールにより、管理者はヘルス・ステータス、パフォーマンス、人気に関する精度の高い制御と監視メカニズムを提供します。長期にわたる過去のパフォーマンスやステータスのレポート(単独のOracle Application Serverコンテキスト内)を取得するツールも備わっています。Frameworkアプリケーション・メトリックは、使い慣れたApplication Server Controlの監視および管理インタフェースを使用して提供されます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』を参照してください。

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

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

WebCenter Portal用のパーソナライズを使用してポータルのパーソナライズ機能を提供している場合、手動でbuild.xmlファイルを更新する必要があります。詳細は、第9.12.1項「WCPS MARファイルの構築」を参照してください。

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

ステージング環境または本番環境の初期設定およびプロビジョニングの詳細は、『Oracle Application Server管理者ガイド』のOracle WebCenter Portalの新しい本番環境への移動に関する項を参照してください。セキュリティ・ポリシーおよび資格証明の環境への最初の移動については、第9.15項「ライフ・サイクルを通したセキュリティの管理」も参照してください。『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』も参照してください。

9.9 WebCenter Portal: Frameworkアプリケーションの既存環境への移動

このシナリオでは、Oracle WebCenter Portalがインストールおよび構成されている作業用本番環境があり、変更内容を本番環境にローリングする前に、アプリケーションや構成の変更をテストします。たとえば、既存のセキュリティ・ポリシーや構成を変更したとします。

デプロイ・スクリプトと構成スクリプトによる既存の環境の更新をお薦めします。サンプル・スクリプトはWebCenterに用意されているので、それを環境に合うように自由に変更できます。詳細は、第9.11項「ターゲットのサーバーでのアプリケーションのデプロイおよび構成」および第9.12項「WebCenter Portalのパーソナライズのファイルの構築とデプロイ」を参照してください。

WebCenterには、WebCenter Portal管理コンソールに組み込まれた伝播ツールが備わっています。伝播ツールは、アプリケーションをステージング環境から本番環境へ移動するためのものです。第9.13項「ステージングから本番に伝播させる伝播ツールの使用」を参照してください。

Oracle WebCenter Contentのコンテンツの移動の詳細は、第9.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。

セキュリティ・ポリシーと資格証明の移動の詳細は、第9.15項「ライフ・サイクルを通したセキュリティの管理」を参照してください。

詳細は、『Oracle Application Server管理者ガイド』のOracle WebCenter Portalの既存の本番環境への移動に関する項を参照してください。

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

JDeveloperで作業するFrameworkアプリケーション開発者は、通常、統合WebLogic Serverにアプリケーションをローカルにデプロイします。ライフ・サイクルの他のフェーズ(テスト、ステージングおよび本番)では、適切な管理対象サーバーへのデプロイメントをお薦めします。あるいは、ポートレット開発の場合、サービス・プロデューサ管理対象サーバーにデプロイする必要があります。管理対象サーバーへのデプロイの詳細は、第69.3項「WebLogic管理対象サーバーへのFrameworkアプリケーションのデプロイ」を参照してください。

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

ライフ・サイクルの間、通常のポータルはテスト・サーバー、ステージング・サーバーおよび本番サーバーへデプロイされます。この項では、Frameworkアプリケーションをターゲットのサーバーでデプロイおよび構成する手法について説明します。

- 第9.11.1項「概要」

- 第9.11.2項「デプロイおよび構成スクリプトの使用」

9.11.1 概要

WebCenterに用意された構成可能スクリプトで、アプリケーションを容易に該当するサーバーのインスタンスにデプロイして構成できます。ビルドおよびデプロイ・スクリプトは、ターゲットのサーバーにサーバーと接続の情報を指定する、シンプルなプロパティ・ファイル・パラメータを取ります。各ターゲットのサーバーに対して一度だけこのプロパティ・ファイルを作成する必要があります。その後、デプロイを実行し、パラメータとして適切なプロパティ・ファイルを使用してスクリプトを構成します。

アプリケーションのデプロイには、ojdeployを使用するのではなく、この項で説明するスクリプトを使用することをお薦めします。ベスト・プラクティスは、JDeveloperにより提供されるAntタスクを使用してアプリケーションを構築し、この項で説明するスクリプトを使用してアプリケーションをデプロイおよび構成することです。ojdeployコマンドライン・ユーティリティを使用すると、JDeveloper IDEを起動しないでJDeveloperからアプリケーションをデプロイできます。

注意:

第9.13項「ステージングから本番に伝播させる伝播ツールの使用」で説明する伝播ツールは、主に、サイト管理者が承認されたサイト構造の変更内容を停止時間が生じることなく本番環境にプッシュする際に使用します。

ヒント:

ビルド・スクリプトおよびデプロイ・スクリプトは、サーバー名、ポート、コンテンツ管理接続、データベース接続など、環境間で可変の情報を分離します。Frameworkアプリケーションの大半の部分では、アプリケーションを別のサーバーに再デプロイする際に変更する必要はありません。たとえば、アプリケーションの名前は変更しません。

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

この項で説明するデプロイおよび構成スクリプトを使用するのは、主に、本番アプリケーションがほとんど読取り専用でライブの場合のみです。このシナリオでは、コンテンツ・ディストリビュータがステージングされたアプリケーションに対してアクティブな変更を加え、コンテンツを本番へ移行する前にコンテンツの承認を受けます。自動コンテンツ・レプリケーションを使用して、適切なワークフローの承認後にコンテンツをステージングから本番へ移行することをお薦めします。第9.14項「Oracle WebCenter Contentからのコンテンツの伝播」を参照してください。

セキュリティ変更は、デプロイおよび構成スクリプトによる影響を受けません。本番へのサイト構造の変更をプッシュするには、管理者は、第9.13項「ステージングから本番に伝播させる伝播ツールの使用」で説明するように伝播ツールを使用できます。第9.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ファイルを開いて、ターゲット環境の該当する値を追加します。例9-1に、サンプル・ファイルを示します。

注意:

WebLogic Serverデプロイメントでは、WebSphereサーバー・プロパティの下にリストされたプロパティは無視してかまいません。Oracle Fusion Middlewareサードパーティ・アプリケーション・サーバー・ガイドのWebSphereにデプロイされたアプリケーションのデプロイおよび構成スクリプトの使用に関する項も参照してください。

例9-1 setup.propertiesサンプル・ファイル

# Adminserver
admin.jmx.url=t3\://hostname\:portnum
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プロデューサ、WebCenter Portalのパーソナライズなどの設定が含まれます。例9-2に、wcconfig.propertiesサンプル・ファイルを示します。

例9-2 wcconfig.propertiesサンプル・ファイル

webcenter.wcps.app.name=wcps-services
webcenter.wcps.app.server=WC_Utilities
admin.jmx.url=t3\://hostname\:myport
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=myport
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\:myport/portalTools/omniPortlet/providers/omniPortlet
app.restart=false
webcenter.app.server=WC_CustomPortal

注意:

wcconfig.propertiesのすべてのプロパティに値が必要です。プロパティが不要の場合には、値を空のままにせず、削除するかコメント・アウトします。

6. create_profile.cshを実行して、ターゲット環境ごとのプロパティ・ファイルを作成します。たとえば、テスト、ステージングおよび本番環境にそれぞれファイルを作成できます。

7. wcconfig.propertiesファイル(あるいは名前を変更した場合はそのファイル)を入力として受け入れるようにdeploy_and_configスクリプトを編集します。

8. deploy_and_confgスクリプトを実行します。たとえば、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に渡してデフォルト動作をオーバーライドできます。

このスクリプトは、Frameworkアプリケーションをデプロイして構成し、ターゲット環境で実行します。

9.11.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管理ツールに関する項も参照してください。

注意:

ポートレット・プロデューサ・アプリケーションのカスタマイズもMDSに保存されます。ポートレット・プロデューサをデプロイする際には、カスタマイズは現在構成されているプロデューサの接続にアップロードされます。デプロイおよび構成スクリプトを使用して、プロデューサ接続を管理する(デプロイ後に再構成してからアプリケーションを再デプロイするのではなく)ことをお薦めします。デプロイおよび構成スクリプトでは、接続情報が変更されるたびにプロデューサのカスタマイズが適切に再デプロイされます。

9.12 WebCenter Portalのパーソナライズのファイルの構築とデプロイ

この項では、WebCenter Portalのパーソナライズのファイルを構築してデプロイする方法を説明します。

注意:

パーソナライズの統合および構成については、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWebCenter Portalのパーソナライズの前提条件に関する項を参照してください。

- 第9.12.1項「WCPS MARファイルの構築」

- 第9.12.2項「WCPSファイルのサーバーへのデプロイ」

- 第9.12.3項「WCPSファイルのアーカイブ・ファイルへのデプロイ」

- 第9.12.4項「MARファイルのインポートとエクスポート」

9.12.1 WCPS MARファイルの構築

WebCenterには、WCPS MARファイル構築用のAntタスクが用意されています。WCPSを使用している場合、このタスクを夜間ビルド・スクリプトに追加することをお薦めします。

1. Frameworkアプリケーション用のAntビルド・スクリプトを作成します。詳細は、第9.7項「夜間ビルド・スクリプトの構成」を参照してください。

2. build.xmlファイルをエディタで開きます。

3. build-marタスクのAntターゲットを、例9-3に示すように、build.xmlファイルに追加します。

注意:

Antタスクは、ネストされた<fileset>要素をサポートし、シナリオとネームスペースXMLファイルをスキャンする場所を指定します。この要素は、すべての標準Antファイルセットのセマンティックをサポートします。表9-3に<fileset>の使用について示します。

例9-3 サンプルのdeploy-wcps-marターゲット要素

<target name="build-wcps-mar">
<taskdef name="build-mar"
classname="oracle.wcps.tools.ant.BuildMARTask"
uri="oracle:webcenter:wcps"> <classpath> <pathelement  path="${oracle.jdeveloper.home}/jdev/extensions/oracle.wcps.tools.common/oracle.wcps.tools.ant.jar"/>
</classpath>
</taskdef>
<basename property="application.name"
file="${oracle.jdeveloper.workspace.dir}"/>
<wcps:build-mar xmlns:wcps="oracle:webcenter:wcps"
destFile="deploy/${application.name}-wcps.mar"
appName="${application.name}"
scenarionamespace="SomeThingElse"
failonfilescanerror="false" failonempty="true"> <fileset dir="${oracle.jdeveloper.workspace.dir}">
<include name="Portal/**/*.xml"/>
<exclude name="Portal/public_html/**"/>
</fileset>
</wcps:build-mar>
</target>

注意:

例9-3では、<include>要素と<exclude>要素内にある名前"Portal"はポータル・プロジェクトの名前にする必要があります。たとえば、プロジェクトの名前がNewCustomPortalの場合、これらの要素は次のようにします。

<include name="NewCustomPortal/**/*.xml"/>

<exclude name="NewCustomPortal/public_html/**"/>

4. allターゲットのdepends属性にタスクを追加します。例:

<target name="all" depends="deploy,build-wcps-mar"/>

5. build.xmlファイルを保存します。

このbuild-mar Antタスクは、表9-3に示した属性をサポートします。

表9-3 Antタスクにサポートされる属性

属性

必須

説明

destfile

はい

書き込む.marファイルの場所です。存在する場合には上書きされます。

appname

はい

アプリケーション名です。通常、.jwsファイルのベース名です。

scenarionamespace

いいえ

シナリオのネームスペースです。デフォルトではアプリケーション名と同じ設定となります(JDeveloperと同様)。

failonfilescanerror

いいえ

(Boolean)タスクが指定されたファイルをスキャンできない場合、タスクが構築に失敗するようにするかどうか指定します。デフォルト値はtrueです。

fileonempty

いいえ

(Boolean) WCPSファイルが見つからない場合、タスクが構築に失敗するようにするかどうか指定します。デフォルトはfalseです。

failonfilescanerror="false"を設定しない場合、次のようなエラーが表示されます。

BUILD FAILED:
Unable to read C:\opt\jdev-applications\Application1\Model\classes\.data\00000000\00000000.jdb

または、ファイル・セットを絞り込むか(たとえば、*.xmlを使用して)、failonfilescanerror="false"を指定(この場合、単に警告が表示されます)します。

9.12.2 WCPSファイルのサーバーへのデプロイ

WCPSファイルをサーバーにデプロイするには:

1. JDeveloperでポータル・プロジェクトを開きます。WLSTコマンドを使用してこのデプロイを実行する場合には、第9.12.4項「MARファイルのインポートとエクスポート」を参照してください。

2. 「アプリケーション」メニューから、「パーソナライズ・ファイルのデプロイ」を選択して「サーバーへ」を選択します。

3. 「サーバーへのデプロイ」ダイアログで、サービスをデプロイするサーバーを選択します。図9-3を参照してください。

図9-3 「サーバーへのデプロイ」ダイアログ

「図9-3 「サーバーへのデプロイ」ダイアログ」の説明

注意:

オプションで、「追加」ボタンをクリックして、サーバーをリストに追加できます。

4. 「...」ボタンをクリックして、特定のサーバー・インスタンスを選択します。たとえば、実行中のDefaultServerなどです。

5. 終わったら、「OK」をクリックします。

6. 「メッセージ - ログ」ウィンドウで、デプロイの詳細をチェックします。ログに、メタデータ・ファイルのデプロイが正常に完了したかどうかが表示されます。

9.12.3 WCPSファイルのアーカイブ・ファイルへのデプロイ

ファイル・システムで、WCSPファイルをメタデータ・アーカイブ(MAR)ファイルにデプロイできます。MARファイルをデプロイするには:

1. JDeveloperでポータル・プロジェクトを開きます。

2. 「アプリケーション」メニューから、「パーソナライズ・ファイルのデプロイ」を選択して「ファイルシステムへ」を選択します。

3. 「ファイルシステムへのデプロイ」ダイアログで、「メタデータ・アーカイブの作成」を選択して、MARファイルの場所と名前を指定します。

その後、コマンドライン・ユーティリティを使用して、MARファイルをサーバーに更新できます。詳細は、第9.12.4項「MARファイルのインポートとエクスポート」を参照してください。

9.12.4 MARファイルのインポートとエクスポート

WCPSサーバーをメタデータ・アーカイブ(MAR)ファイルから新しいファイルを使用して更新するには、次のWLSTコマンドでサーバーに接続してメタデータをインポートします。

wlst:> connect('<username>', '<password>', 't3://admin-server-hostname:myport')
wlst:> importMetadata(application='wcps-services', server='WC_Utilities', fromLocation='<mar file>', remote='true')

WCPSをファイルシステムでサーバーからMARファイルにエクスポートするには、これらのWLSTコマンドでサーバーに接続してメタデータをエクスポートします。

wlst:> connect('<username>', '<password>', 't3://admin-server-hostname:myport')
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です。

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

WebCenter Portal管理コンソールには、ポータル・メタデータをステージングから本番サーバーへ移行する伝播ツールが備わっています。サイト管理者はこのツールを時々使用して、承認されたサイト構造の変更内容を停止時間が生じることなく本番サーバーにプッシュします。

注意:

伝播ツールは、ポータルのメタデータとWebCenter Portalのパーソナライズのファイルの伝播をサポートしています。詳細は、第9.13.4項「WCPSファイルの伝播」を参照してください。

注意:

WebCenterでは、ポートレット・プリファレンスをインポートおよびエクスポートするためのWLSTコマンドを用意しています。そのコマンドを使用して、ステージング・サーバーと本番サーバーの間でポートレット・プリファレンス・データをレプリケートします。詳細は、第9.16項「ポートレット・プリファレンスの移行」を参照してください。

- 第9.13.1項「伝播ツールの概要」

- 第9.13.2項「伝播ツールの構成」

- 第9.13.3項「ポータル・メタデータの伝播」

- 第9.13.4項「WCPSファイルの伝播」

9.13.1 伝播ツールの概要

WebCenterには、ポータル・メタデータをステージングから本番に移行する伝播ツールが備わっています。実際には、ステージング環境と本番はステージング・ポータルに変更が施されるまでは同一のままです。変更内容はテストして承認されると、管理者は伝播ツールを使用して変更内容を本番サーバーにプッシュします。この転送の際には、本番サーバーを再起動する必要はありません。

適切に構成されていれば、伝播ツールは図9-4に示すようにWebCenter Portal管理コンソールにタブとして表示されます。

図9-4 「伝播」タブ

「図9-4 「伝播」タブ」の説明

「伝播」タブの「ラベル履歴」部分には、各伝播に作成されたラベル、「伝播」タブの外側に作成されたラベル、デプロイ中に作成されたラベルやWLSTを使用して作成されたラベルなどのリストが表示されます。各ラベルには、最後の伝播が実行されてから変更されたファイルのリストが表示されます。ラベルの内容を表示するには、図9-5に示すように、ラベル名の左の矢印ボタンをクリックします。

図9-5 ラベルを開いたときの「伝播」タブ

「図9-5 ラベルを開いたときの「伝播」タブ」の説明

9.13.2 伝播ツールの構成

注意:

伝播ツールの使用で、いずれかのMDSドキュメントのファイル名にマルチバイトのNLS文字が含まれている場合、ステージング・マシンはそのNLSに対して構成する必要があります。

「伝播」タブは、ステージング・サーバーにデプロイされたポータルでURL接続が構成されている場合、WebCenter Portal管理コンソールに表示されるのみです。このURL接続は本番サーバーを指しており、ProductionURLConnectionという名前である必要があります。

このURL接続の構成には、Fusion Middleware Controlコンソールを使用するかOracle WebLogic Scripting Tool (WLST)を使用するかの2つの選択肢があります。この項では、両方のテクニックを説明します。

9.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. ナビゲーション・ツリーで、「アプリケーションのデプロイ」フォルダを開き、アプリケーションをクリックします。図9-6を参照してください。

3. 右側のアプリケーション・ペインで、「アプリケーションのデプロイ」メニューを開き、「ADF」サブメニューから「ADF接続の構成」を選択します。図9-6に示すように、「ADF接続構成」パネルが開きます。

図9-6 Fusion Middleware Controlコンソールでのアプリケーションの選択

「図9-6 Fusion Middleware Controlコンソールでのアプリケーションの選択」の説明

4. 「接続の作成」ボックスで、URLの「接続タイプ」を選択して「接続名」にProductionURLConnectionと入力します。図9-7を参照してください。

注意:

接続の名前はProductionURLConnectionにしてください。この名前は大文字と小文字を区別します。

図9-7 接続の作成

「図9-7 接続の作成」の説明

5. 「URL接続」ボックスで、「編集」をクリックします。

6. 「URL接続」ダイアログ・ボックスに次のとおり入力します。

- URL: 本番サーバーのURL(ホスト名とポート番号を含む)を入力します。

- ユーザー名: 接続用ユーザー名を入力します。

- パスワード: 接続用パスワードを入力します。

- 認証レルム: 「認証レルム」の値を入力する必要があります。このフィールドを空白のままにしないでください。ProductionRealmなどの任意の文字列を入力できます。
残りのフィールドには、デフォルト値をそのまま使用できます。図9-8を参照してください。

図9-8 「URL接続」ダイアログ

「図9-8 「URL接続」ダイアログ」の説明

7. 「URL接続」ダイアログに入力したら、「OK」をクリックします。

8. Fusion Middleware Controlコンソール・ウィンドウの右上隅にある「適用」をクリックします。

9.13.2.2 WLSTによるURL接続の構成

Oracle WebLogic Scripting Tool (WLST)コマンドを使用してURL接続を作成できます。コマンドへのパラメータは、前述の項第9.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:myport', user='weblogic', password='password_for_weblogic', realm='ProductionRealm'

WLSTの詳細は、Oracle Technology Networkの『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』を参照してください。

9.13.3 ポータル・メタデータの伝播

ステージング・ポータル上で施した変更を本番ポータルに移動するには、伝播ツールを使用します。

注意:

ステージング・ポータルでページを削除する場合、ソースおよびターゲット・ポータルのページ・データが完全に同じになるように伝播が行われる前に、本番ポータルでページを手動で削除することをお薦めします。新しいページとページの更新はターゲットに伝播されますが、伝播プロセスはページの削除を伝播しません。

1. 伝播ツールは、第9.13.2項「伝播ツールの構成」の説明に従って、必ず構成しておいてください。伝播ツールを使用するには、管理者の権限を取得しておく必要があります。

2. WebCenter Portal管理コンソールを開きます。デフォルトでは、管理コンソールは次のURLにあります。

http://<server>:<port>/<context_root>/admin

WebCenter Portal管理コンソールの使用の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWebCenter Portal管理コンソールの使用に関する項を参照してください。

3. 「伝播」タブを選択します。

注意:

「伝播」タブが表示されない場合は、管理者の権限を取得していないか、伝播ツールが第9.13.2項「伝播ツールの構成」の説明のとおりに正しく構成されていない可能性があります。

4. 「伝播」をクリックして、ファイルを本番サーバーに転送します。

9.13.4 WCPSファイルの伝播

伝播ツールは、WebCenter Portalのパーソナライズのファイルのステージングから本番への移動をサポートします。伝播ツールはソース・サーバーのアプリケーションのMDSリポジトリから自動的にメタデータをエクスポートし、それをターゲット・サーバーのアプリケーションのMDSリポジトリにインポートします。

伝播ツールのWCPSファイル移動機能は、次の条件によって決まります。

- FrameworkアプリケーションのMDSリポジトリは、mds-wcpsDSデータソースと同じデータベースを指している必要があります。これがデフォルトの構成です。一般的な図は、図9-2を参照してください。通常、デフォルトのデータベース構成を変更しなければ、伝播は正確に機能します。

- ソース・サーバーと移動先のサーバーの両方で、アプリケーションMDSストアはwcps-servicesのMDSストアと同一のパーティション名を使用する必要があります。標準のポータルの構成では、このパーティションはwebcenter-portalです。

注意:

通常、伝播ツールの初期化とMDS変更のWCPS RESTサービスへの通知の間に1から2分の遅延があります。この遅延は、第9.12.4項「MARファイルのインポートとエクスポート」の説明のとおり、WLSTコマンドを使用してWCPSファイルを伝播する際に発生します。

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

手動または自動によるレプリケーションを使用して、ある環境から別の環境にコンテンツを移動することをお薦めします。あるいは、コンテンツを手動で伝播する方法もありますが、このオプションは、ソース・サーバーとターゲット・サーバーが相互通信できない場合のみお薦めします。

Oracle WebCenter Contentのコンテンツを伝播するツールとオプションの詳細は、Oracle WebCenter Content Content Serverシステム管理者ガイドのシステムの移行とアーカイブの管理に関する項を参照してください。その章には、アーカイブ・ファイルのエクスポートとインポートによるOracle WebCenter Contentのコンテンツの伝播についての説明があります。また、レプリケーションの設定方法と使用方法の説明もあります。レプリケーションでは、エクスポート、インポートおよび転送の各機能を自動化できます。たとえば、レプリケーションを使用して自動的に、あるコンテンツ・サーバーのインスタンスからエクスポートし、そのアーカイブを別のコンピュータに転送し、別のコンテンツ・サーバー・インスタンスにインポートできます。

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

この項では、セキュリティ・ポリシーと資格証明を1つの環境から別の環境へ移行するテクニックについて説明します。移行は自動でも手動でも実行できます。自動的な移行は、通常、アプリケーションを初めてデプロイする際に使用されます。手動の移行は再デプロイで使用されます。

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

アプリケーション・ポリシーが記載されたjazn-data.xmlをEARファイルにパッケージ化する際に、Oracle Platform Security Services (OPSS)ではweblogic-application.xmlのアプリケーション構成設定に基づいてポリシーの移行が実行されます。例9-4に、初回デプロイで自動的にポリシー移行を実現できるweblogic-application.xmlの推奨設定を示します。

例9-4 ポリシーの自動移行の設定(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に設定してください。

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

再デプロイ時には、本番システムで変更されたポリシーの上書きを回避することが重要です。jps.policystore.migrationパラメータがMERGEに設定されていると、ステージング環境からのすべての新規ポリシーは本番ポリシーにマージされます。この設定では、既存ポリシーへの変更(ロールの権限の変更、ロールの削除、ロールのメンバーシップの削除など)は、競合の原因となる恐れがあるため再デプロイ時には移行されません。

本番ポリシーをjazn-data.xmlにパッケージ化されているステージング環境のセキュリティ・ポリシーで上書きする場合には、migrateSecurityStore WLSTコマンドを使用します。migrateSecurityStoreコマンドの詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』を参照してください。

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

アプリケーションの資格証明の移行サポートは、アプリケーションのポリシーの移行と似ています。JpsApplicationLifecycleListenerでは、別のセキュリティ施行によるアプリケーションのデプロイと再デプロイでの資格証明の移行に対応しています。

cwallet.ssoのアプリケーション資格証明とMETA-INF/ディレクトリ内のEARファイルにパッケージ化されたアプリケーション資格証明を使用して、OPSSではweblogic-application.xmlに記載された構成設定に基づいて、資格証明がシステムの資格証明ストアに移行されます。

例9-4に、初回デプロイで自動的に資格証明の移行を実現できるweblogic-application.xmlの推奨設定を示します。

例9-5 資格証明の自動移行の設定(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からの新規資格証明のキー/値のみが移行されます。既存の資格証明のキーへの変更は移行されません。

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

ステージングで変更された資格証明を本番に移動する必要がある場合には、migrateSecurityStoreコマンドを使用して変更された資格証明を移行します。migrateSecurityStoreコマンドの詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』を参照してください。

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

WebCenterでは、ポートレット・プリファレンスをインポートおよびエクスポートするためのWLSTコマンドを用意しています。エクスポートされたプリファレンス(カスタマイズおよびパーソナライズ)をターゲット・アプリケーションにインポートできます(ステージング・アプリケーションからのエクスポートや本番アプリケーションへのインポートなど)。詳細は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のOracle WebCenter PortalカスタムWLSTコマンドに関する項に記載されたexportPortletClientMetadataとimportPortletClientMetadataを参照してください。また、エクスポートとインポートが有効化されていることを確認してください。第59.3.14項「設計時にポートレット・プロデューサをエクスポートおよびインポートする方法」を参照してください。

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

まれに、本番サーバーにプッシュした変更をステージングからロールバックする必要が生じることがあります。この章で説明する伝播モデルは、ステージング・インスタンスへの少量の変更を伝播ツールで本番にプッシュすることを前提としています。変更をロールバックする必要が生じたら、手動でその変更をステージング・インスタンスで元に戻し、新たに変更したステージング・インスタンスを適切な検証とテストの後に本番にプッシュしなおしてください。このプロセスで、元の変更がロールバックされ、本番システムは元の状態に戻されます。

10 ポータル用のナビゲーション・モデルの構築

この章では、WebCenter Portal: Frameworkアプリケーションでナビゲーション・モデルを作成する方法を説明します。ナビゲーション・モデルは、ポータル・ナビゲーションのコンテンツ、構造およびメタデータを定義します。

この章には次の項が含まれます:

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

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

- 第10.3項「ナビゲーション・モデルへのリソースの追加」

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

- 第10.5項「ナビゲーション・レンダラの編集」

- 第10.6項「REDIRECT_OPTIONSコンテキスト・パラメータの設定」

- 第10.7項「ナビゲーション・モデルの実行時管理の有効化」

- 第10.8項「WebCenter Portal: Spacesのナビゲーション・モデルの使用」

ポータルでのナビゲーション・モデルの公開方法の詳細は、第13章「ポータル・ナビゲーションの視覚化」を参照してください。

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

通常、ポータルでは様々なソースからの情報が提供されます。情報源は、ページ、ポートレット、タスク・フロー、コンテンツ・リポジトリ、外部ページなどです。ユーザーには、簡単にこの情報内を移動して、必要な特定の情報に素早くアクセスできる方法が必要です。ポータル・ナビゲーションにより、そのような情報へのアクセスを提供します。

ナビゲーション・モデルは、ナビゲーションのコンテンツ、構造およびメタデータを定義します。ナビゲーション・モデルを作成する場合、追加するアイテムとそれらのアイテムの階層を指定します。ナビゲーション・モデルには、次のリソースを含めることができます。

- ページ(個々のページとページの階層)

- コンテンツ(個々のコンテンツ・アイテムまたはコンテンツ問合せの結果)

- 他のナビゲーション・モデル

- ポートレット

- タスク・フロー

- 外部アプリケーション

- 外部リンク

詳細は、第10.3項「ナビゲーション・モデルへのリソースの追加」を参照してください。

動的に生成されるリソースを追加することもできます。これらは次のとおりです。

- カスタム・リソース

- コンポーネント

- カスタム・フォルダ

- カスタム・コンテンツ

詳細は、第10.3.7項「ナビゲーション・モデル・データを拡張する方法」を参照してください。

新しいFrameworkアプリケーションを作成すると、ナビゲーション・モデルが作成されます(default-navigation-model.xml)。このシード済ナビゲーション・モデル上にアプリケーションを構築するか、または独自のものを作成できます。異なるユーザー・タイプに対する別々のナビゲーション・モデルの作成が必要になる場合もあります。

注意:

独自のナビゲーション・モデルを作成する場合、シード済ナビゲーション・モデルを拡張しないで、デフォルトのナビゲーション・モデルとして設定することをお薦めします。詳細は、第10.4項「デフォルトのナビゲーション・モデルの選択」を参照してください。

ナビゲーション・モデルを作成すると、組み込まれたナビゲーション・タスク・フローか独自のナビゲーションUIを介してポータル内のページ・テンプレートにそれを公開できます。詳細は、第13章「ポータル・ナビゲーションの視覚化」を参照してください。

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

最初から提供されているデフォルトのナビゲーション・モデルが要件に合ない場合には、独自のナビゲーション・モデルを作成できます。

ナビゲーション・モデルを作成するには:

1. アプリケーション・ナビゲータで、ナビゲーション・モデルを作成するノード(たとえば、/oracle/webcenter/portalapp/navigations)を右クリックし、「新規」を選択します。

2. 「新規ギャラリ」で、「Web層」を開き、「ポータル」、「ナビゲーション」の順に選択し、「OK」をクリックします。

3. 「ナビゲーションの作成」ダイアログ(図10-1)の「ファイル名」フィールドに、ナビゲーションを表すXMLファイルの名前(myNavigation.xmlなど)を入力します。

図10-1 「ナビゲーションの作成」ダイアログ

「図10-1 「ナビゲーションの作成」ダイアログ」の説明

4. 「ディレクトリ」フィールドに、ファイルを作成する場所のフル・ディレクトリ・パスを入力します。

注意:

Frameworkアプリケーションにおいて、実行時リソース・マネージャで新規ナビゲーション・モデルを公開するには、ナビゲーション・モデルをApplication_Root/Portal/public_html/oracle/webcenter/portalappディレクトリに作成する必要があります。デフォルトでは、WebCenter Portalには別のnavigationsディレクトリがあります。

5. 「ポータル・リソースとして作成」を選択し、ナビゲーション・モデルをリソース・レジストリに追加して、実行時にリソース・マネージャで管理できるようにします。

注意:

このオプションが使用できるのは、ナビゲーション・モデルを格納したディレクトリがApplication_Root/Portal/public_html/oracle/webcenter/portalappディレクトリか、そのサブディレクトリのいずれかである場合のみです。

ヒント:

このオプションをこの時点で選択しなくても、リソース・モデルを後からリソース・レジストリに追加できます。その場合は、リソース・モデルを右クリックして「ポータル・リソースの作成」を選択します。

6. 「OK」をクリックします。
新規ナビゲーション・モデルが「デザイン」ビュー(図10-2)で開きます。

図10-2 「デザイン」ビューのナビゲーション・モデル

「図10-2 「デザイン」ビューのナビゲーション・モデル」の説明

7. ナビゲーション・モデルの「デザイン」ビューの「ナビゲーション」列で新規ナビゲーション・モデルを選択し、必要に応じて一般プロパティを定義します。

- 「ナビゲーション・フィルタ」フィールドに、特定の基準に基づいたナビゲーション・モデル内で選択済リソースを除外する際に使用するJavaクラスの名前を入力します。このJavaクラスは、oracle.adf.rc.spi.plugin.catalog.CatalogDefinitionFilterインタフェースを実装します。
リソースはセキュリティに基づいて自動的にフィルタ処理されます。ユーザーが特定のリソースへのアクセス権を持たない場合には、ナビゲーション・モデルがページにレンダリングされてもそのリソースは表示されません。

注意:

また、リソースの「表示可能」フィールドにEL式を指定すると、目的のモデルの個別リソースを条件に基づいて非表示にすることも可能です。

- 「表示可能」フィールドで、ナビゲーション・モデルをアプリケーションで使用可能にするかどうかを指定します。このフィールドは、EL値を取ります。デフォルト値は#{true}で、その場合、ナビゲーション・モデルが他のユーザーによって使用可能で、ナビゲーション・モデルのドロップダウン・リストで有効になります。

- 「ナビゲーション属性」セクションを使用して、必要に応じてナビゲーション・モデルの表示オプションを設定します。使用可能なオプションは、個々のリソースのオプションと同じです。別の表示オプションの詳細は、第10.3.9項「リソースの表示オプションの設定方法」を参照してください。

8. ナビゲーション・モデル定義ファイルを保存します。
ナビゲーションが作成されたので、それにリソースを追加できます。詳細は、第10.3項「ナビゲーション・モデルへのリソースの追加」を参照してください。

10.3 ナビゲーション・モデルへのリソースの追加

ナビゲーション・モデルのコンテンツを定義すると、デフォルトのナビゲーション・モデル(default-navigation-model.xml)にリソースを追加できます。デフォルトのナビゲーション・モデルは、WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成する際に自動的に作成されます。

独自のカスタム・ナビゲーション・モデルを作成して、リソースに追加することも可能です。詳細は、第10.2項「ナビゲーション・モデルの作成」を参照してください。

リソースをナビゲーション・モデルに追加するには、次の2つの方法があります。

- リソースを、JDeveloperの別の領域から「デザイン」ビューのナビゲーション・モデルにドラッグ・アンド・ドロップします。

- ナビゲーション・モデルの「デザイン」ビューで、「新しいノードを追加します」メニューのオプションを使用します(図10-3)。

図10-3 「新しいノードを追加します」メニュー

「図10-3 「新しいノードを追加します」メニュー」の説明

ナビゲーション・モデルの「デザイン」ビューで、既存のリソースの変更および削除もできます。

この項には次のサブセクションが含まれます:

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

- 第10.3.2項「コンテンツ・アイテムをナビゲーション・モデルに追加する方法」

- 第10.3.3項「問合せ結果に基づいたコンテンツをナビゲーション・モデルに追加する方法」

- 第10.3.4項「ページ、ポートレット、タスク・フロー、外部アプリケーションまたはWebページをナビゲーション・モデルに追加する方法」

- 第10.3.5項「ページ階層をナビゲーション・モデルに追加する方法」

- 第10.3.6項「別のナビゲーション・モデルをナビゲーション・モデル内に埋め込む方法」

- 第10.3.7項「ナビゲーション・モデル・データを拡張する方法」

- 第10.3.8項「ナビゲーション・モデルでリソースを編成する方法」

- 第10.3.9項「リソースの表示オプションの設定方法」

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

ナビゲーション・モデルの「デザイン」ビュー内の必要な場所にドラッグ・アンド・ドロップすることにより、次のリソースをナビゲーション・モデルに追加できます。

- コンテンツ - 「アプリケーション・リソース」ペインまたは「リソース・パレット」のContent Server接続からコンテンツ・アイテムをナビゲーション・モデルにドラッグできます。

- ページ - アプリケーション・ナビゲータからナビゲーション・モデルにページをドラッグする際に、目的のページ自体のみを追加するか、そのページに属するサブページに含まれるページ問合せを追加するかを選択するよう要求されます。

- ポートレット - 「アプリケーション・リソース」ペインまたは「リソース・パレット」からポートレットをナビゲーション・モデルにドラッグできます。

- タスク・フロー - 「アプリケーション・リソース」ペインまたは「リソース・パレット」からタスク・フローをナビゲーション・モデルにドラッグできます。

- 外部アプリケーション - 「アプリケーション・リソース」ペインまたは「リソース・パレット」から外部アプリケーションをナビゲーション・モデルにドラッグできます。

- URL - 「アプリケーション・リソース」ペインまたは「リソース・パレット」からURL接続をナビゲーション・モデルにドラッグできます。

- ナビゲーション・モデル - ナビゲーション・モデルをアプリケーション・ナビゲータからドラッグし、それを別のナビゲーション・モデルに埋め込みます。

10.3.2 コンテンツ・アイテムをナビゲーション・モデルに追加する方法

ナビゲーション・モデルには、既存のコンテンツ・リポジトリ接続内の個々のコンテンツ・アイテムへのリンクを追加したり、すべてのコンテンツにアクセスできるフォルダを追加できます。

特定の問合せ基準に適合する一連のドキュメントをナビゲーション・モデルに含めることもできます。詳細は、第10.3.3項「問合せ結果に基づいたコンテンツをナビゲーション・モデルに追加する方法」を参照してください。

コンテンツ・アイテムを追加するには:

ヒント:

コンテンツ・アイテムをナビゲーション・モデルに追加するには、それをナビゲーション・モデルの「デザイン」ビューにドラッグ・アンド・ドロップすることもできます。

1. アプリケーション・ナビゲータで、リソースを追加するナビゲーション・モデルを右クリックし、「開く」をクリックします。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、リソースを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」をクリックして、「コンテンツ・アイテム」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、もう少し説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
リソースがナビゲーション・モデルの最上位にある場合、IDをwc_navtitleまたはwcnav_externalIdにすることはできません。これらのIDは予約されています。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

図10-4 コンテンツ・アイテムのナビゲーション・モデルへの追加

「図10-4 コンテンツ・アイテムのナビゲーション・モデルへの追加」の説明

5. 「URL」フィールドで、リソースにアクセスするURLを入力するか、これを参照します。手動でURLを入力する場合には、次の形式を使用してください。
content://Content_Connection_Id/Document_Id

注意:

次の条件に当てはまる場合、実行時にリソースを使用可能にするには、(「アプリケーション・リソース」ペインで)適切な接続をアプリケーションに追加する必要があります。

- 手動でURLを入力した場合

- 「リソース・パレット」に接続が存在している場合

6. 指定したページ・テンプレートを使用して、現在のページにリソースをレンダリングするには、「ページ・テンプレートでのURLのレンダリング」を選択します。
ナビゲーションでリソースが選択されると、現在のページがそのリソースで上書きされるようにするには、「URLにリダイレクト」を選択します。

7. 「表示可能」フィールドで、リソースをナビゲーションに表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、リソースが常にすべてのユーザーに表示されることを意味します。リソースがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、リソースの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

注意:

リソースはセキュリティに基づいて自動的にフィルタ処理されます。ユーザーが特定のリソースへのアクセス権を持たない場合には、ナビゲーション・モデルがページにレンダリングされてもそのリソースは表示されません。

8. 「URL属性」セクションで、リソースに目的の表示オプションを指定します。詳細は、第10.3.9項「リソースの表示オプションの設定方法」を参照してください。

9. コンテンツ・プレゼンタ表示テンプレートを使用してコンテンツ・アイテムを表示する場合、「URLパラメータ」セクションで「追加」アイコンをクリックして「templateView」を選択します。

10. templateViewパラメータの「値」フィールドに、次のようなコンテンツ・アイテムのレンダリングに使用する表示テンプレート・ビューIDを入力します。

oracle.webcenter.content.templates.default.detail

注意:

コンテンツ・プレゼンタの表示テンプレートを使用してWikiページをFrameworkアプリケーションで表示すると、デフォルトでそのWikiページ内のリンクがドキュメント・ビューアで表示されます。コンテンツ・プレゼンタを使用してWikiページのリンクを表示する場合、adf-config.xmlファイルを編集する必要があります。詳細は、第31.3.5項「コンテンツ・プレゼンタでのWikiページ・リンクの表示」を参照してください。

11. 必要に応じてさらにパラメータを追加します。その他のコンテンツ・プレゼンタ・パラメータについては、第30.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。

12. ナビゲーション・モデル定義ファイルを保存します。

10.3.3 問合せ結果に基づいたコンテンツをナビゲーション・モデルに追加する方法

ナビゲーション・モデルにコンテンツ問合せを追加して、特定の検索基準に一致するすべてのドキュメントを含めることができます。

注意:

単一のファイルまたは特定フォルダ内の全ファイルをナビゲーション・モデルに追加するには、第10.3.4項「ページ、ポートレット、タスク・フロー、外部アプリケーションまたはWebページをナビゲーション・モデルに追加する方法」を参照してください。

コンテンツ問合せを追加するには:

1. アプリケーション・ナビゲータで、リソースを追加するナビゲーション・モデルを右クリックし、「開く」をクリックします。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、リソースを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「コンテンツ問合せ」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、もう少し説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
リソースがナビゲーション・モデルの最上位にある場合、IDをwc_navtitleまたはwcnav_externalIdにすることはできません。これらのIDは予約されています。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

図10-5 ナビゲーション・モデルへのコンテンツ問合せの追加

「図10-5 ナビゲーション・モデルへのコンテンツ問合せの追加」の説明

5. 「リポジトリ」フィールドで、検索するコンテンツのコンテンツ・リポジトリを入力するか参照します。

注意:

次の条件に当てはまる場合、実行時にリソースを使用可能にするには、(「アプリケーション・リソース」ペインで)適切な接続をアプリケーションに追加する必要があります。

- 手動でリポジトリ名を入力した場合

- 「リソース・パレット」に接続が存在している場合

6. 「問合せ」フィールドに、ナビゲーション・モデルに含めるコンテンツを特定する問合せ基準を入力します。例:

select * from cmis:document WHERE cmis:name LIKE 'Foo%'

問合せのフォーマット方法と例の詳細は、『Oracle Fusion Middleware Content Management REST Service開発者ガイド』を参照してください。

7. 「表示可能」フィールドで、リソースをナビゲーションに表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、リソースが常にすべてのユーザーに表示されることを意味します。リソースがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、リソースの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

注意:

リソースはセキュリティに基づいて自動的にフィルタ処理されます。ユーザーが特定のリソースへのアクセス権を持たない場合には、ナビゲーションがページにレンダリングされてもそのリソースは表示されません。

8. 「フォルダの内容の挿入」を選択し、問合せの結果をフォルダの下に表示するのではなく、ナビゲーションに直接表示します。

9. 「コンテンツ問合せ属性」セクションで、リソースに目的の表示オプションを指定します。詳細は、第10.3.9項「リソースの表示オプションの設定方法」を参照してください。

10. コンテンツ・プレゼンタ表示テンプレートを使用してコンテンツ問合せの結果を表示する場合、「URLパラメータ」セクションで「追加」アイコンをクリックして「templateView」を選択します。

11. templateViewパラメータの「値」フィールドに、次のようなコンテンツ問合せ結果のレンダリングに使用する表示テンプレート・ビューIDを入力します。

oracle.webcenter.content.templates.default.list.simple

注意:

コンテンツ・プレゼンタ表示テンプレートを使用してWikiページを表示すると、デフォルトでそのWikiページ内のリンクがドキュメント・ビューアで表示されます。コンテンツ・プレゼンタを使用してWikiページのリンクを表示する場合、adf-config.xmlファイルを編集する必要があります。詳細は、第31.3.5項「コンテンツ・プレゼンタでのWikiページ・リンクの表示」を参照してください。

12. 必要に応じてさらにパラメータを追加します。その他のコンテンツ・プレゼンタ・パラメータについては、第30.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。

注意:

ナビゲーション・モデルに同じポートレットへのリンクを2度含める(最初のリンクはパラメータ値を指定し、2番目は指定しない)場合、最初のリンクに設定したパラメータが保持され、2番目のリンクにも使用されます。パラメータが2番目のリンクに使用されないようにするには、そのパラメータ値を明示的にNULLに設定する必要があります。

13. ナビゲーション・モデル定義ファイルを保存します。

10.3.4 ページ、ポートレット、タスク・フロー、外部アプリケーションまたはWebページをナビゲーション・モデルに追加する方法

次のタイプのリソースへのリンクをナビゲーション・モデルに追加できます。

- 外部リンク: 任意の外部WebページへのHypertextリンク

注意:

「外部リンク」オプションを使用してmailto:リンクをナビゲーションに含める場合、ナビゲーションUIはこのタイプのリンクを明示的に処理する必要があります。詳細は、第11.2.3項「WebCenter Portalアプリケーションのページ・テンプレート作成に関する必要な知識」を参照してください。

- 外部アプリケーション: 任意の登録済の外部アプリケーションへのリンク。

- ページ: アプリケーション内の任意のJSPXページへのリンク。
このオプションにより、単一ページへのリンクをナビゲーション・モデルに追加できます。ページ階層全体を含める方法については、第10.3.5項「ページ階層をナビゲーション・モデルに追加する方法」を参照してください。

- タスク・フロー: アプリケーション内の任意のタスク・フロー、またはWebCenter Portalタスク・フロー(リソース・パレットで使用可)へのリンク。

注意:

この方法でナビゲーションを直接タスク・フローに指定すると、ユーザーはタスク・フローをカスタマイズできません。ユーザーがタスク・フローをカスタマイズできるようにするには、タスク・フローをページに追加し、そのページをナビゲーション・モデルに追加します。

- ポートレット: 任意の登録済のポートレット・プロデューサのポートレットへのリンク。

注意:

この方法でナビゲーションを直接ポートレットに指定すると、ユーザーはポートレットをカスタマイズできません。ユーザーがポートレットをカスタマイズできるようにするには、ポートレットをページに追加し、そのページをナビゲーション・モデルに追加します。

- その他: カスタム・リソースへのリンク。詳細は、第10.3.7.1項「リンクをカスタム・リソースに追加する方法」を参照してください。

リンクをページ、ポートレット、タスク・フロー、外部アプリケーションまたはWebページに追加するには:

ヒント:

ポートレット、タスク・フロー、外部アプリケーションまたはWebページをナビゲーション・モデルに追加するには、それをナビゲーション・モデルの「デザイン」ビューにドラッグ・アンド・ドロップすることもできます。

リンクを単一ページに追加するには、そのページをナビゲーション・モデルの「デザイン」ビューにドラッグして、ポップアップ・メニューから「ページ・リンク」を選択します。

1. アプリケーション・ナビゲータで、リソースを追加するナビゲーション・モデルを右クリックし、「開く」をクリックします。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、リソースを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「リンク」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、もう少し説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
リソースがナビゲーション・モデルの最上位にある場合、IDをwc_navtitleまたはwcnav_externalIdにすることはできません。これらのIDは予約されています。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

図10-6 ナビゲーション・モデルへのリンクの追加

「図10-6 ナビゲーション・モデルへのリンクの追加」の説明

5. 「タイプ」ドロップダウン・リストから、ナビゲーション・モデルに追加するリソースのタイプ(「外部リンク」、「外部アプリケーション」、「ページ」、「タスクフロー」、「ポートレット」)を選択します。

6. 「ファクトリ・クラス」フィールドには、リソース・タイプの適切なファクトリ・クラスが自動的に移入され、編集できません。

注意:

「その他」のタイプのリソースを追加すると、「ファクトリ・クラス」フィールドが編集可能になり、リソースのファクトリ・クラスを入力する必要があります。詳細は、第10.3.7.1項「リンクをカスタム・リソースに追加する方法」を参照してください。

7. 「URL」フィールドで、リソースにアクセスするURLを入力するか、これを参照します。表10-1に、様々なリソース・タイプに使用するURL形式を示します。

表10-1 様々なリソース・タイプのURLの形式

リソース・タイプ

アプリケーション内での場所

URL形式

外部リンク

なし

Webページへの絶対パスまたは相対パス

注意: 「外部リンク」オプションを使用してmailto:リンクをナビゲーションに含める場合、ナビゲーションUIはこのタイプのリンクを明示的に処理する必要があります。詳細は、第11.2.3項「WebCenter Portalアプリケーションのページ・テンプレート作成に関する必要な知識」を参照してください。

外部アプリケーション

「アプリケーション・リソース」ペイン内の外部アプリケーション接続

extapp://External_Application_Id

ページ

アプリケーション・ナビゲータ

page://Path_to_Page/Page_Name

例:

page://oracle/webcenter/portalapp/pages/myPage.jspx

ADFライブラリからのタスク・フロー

リソース・パレット

taskflow://Path_to_TaskFlow/TaskFlow_Definition_File_Name#TaskFlow_Id

アプリケーション内のタスク・フロー

アプリケーション・ナビゲータ

taskflow://Path_to_TaskFlow/TaskFlow_Definition_File_Name#TaskFlow_Id

ポートレット

「アプリケーション・リソース」ペインまたは「リソース・パレット」内のポートレット・プロデューサ接続

portlet://Producer_Id/Portlet_Id

注意:

次の条件に当てはまる場合、実行時にリソースを使用可能にするには、(「アプリケーション・リソース」ペインで)適切な接続をアプリケーションに追加する必要があります。

- 手動でURLを入力した場合(ドラッグ・アンド・ドロップや「リソースの選択」ダイアログを使用しないで)

- リンクの「タイプ」が「外部アプリケーション」または「ポートレット」の場合

- 「リソース・パレット」に接続が存在している場合

8. 指定したページ・テンプレートを使用して、現在のページにリソースをレンダリングするには、「ページ・テンプレートでのURLのレンダリング」を選択します。
ナビゲーションでリソースが選択されると、現在のページがそのリソースで上書きされるようにするには、「URLにリダイレクト」を選択します。

9. 「表示可能」フィールドで、リソースをナビゲーションに表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、リソースが常にすべてのユーザーに表示されることを意味します。リソースがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、リソースの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

注意:

リソースはセキュリティに基づいて自動的にフィルタ処理されます。ユーザーが特定のリソースへのアクセス権を持たない場合には、ナビゲーション・モデルがページにレンダリングされてもそのリソースは表示されません。

10. 「URL属性」セクションで、リソースに目的の表示オプションを指定します。詳細は、第10.3.9項「リソースの表示オプションの設定方法」を参照してください。

11. 「URLパラメータ」セクションで、必要に応じて、選択したリソースでサポートしているパラメータの値を入力します。

12. ナビゲーション・モデル定義ファイルを保存します。

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

ページの階層をナビゲーション・モデルに追加できます。階層内の選択済ページの下にあるすべてのページが、ナビゲーション・モデルに含まれます。

アプリケーション内に単一のページ階層しかない場合でも、ナビゲーション・モデルではアプリケーションのページ階層内のすべてのノードを開始点として使用できます。

注意:

ナビゲーション・モデルに単一ページを含めるのみの場合は、「リンク」ナビゲーション・タイプを使用してください。詳細は、第10.3.4項「ページ、ポートレット、タスク・フロー、外部アプリケーションまたはWebページをナビゲーション・モデルに追加する方法」を参照してください。

ページ階層を追加するには:

ヒント:

ページ階層のセクションをナビゲーション・モデルに追加するには、ページ(すでにページ階層に追加してある)をアプリケーション・ナビゲータからナビゲーション・モデルの「デザイン」ビューにドラッグ・アンド・ドロップします。表示されるポップアップ・メニューから「ページ問合せ」を選択します。

1. アプリケーション・ナビゲータで、リソースを追加するナビゲーション・モデルを右クリックし、「開く」をクリックします。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、リソースを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「ページ問合せ」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、もう少し説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
リソースがナビゲーション・モデルの最上位にある場合、IDをwc_navtitleまたはwcnav_externalIdにすることはできません。これらのIDは予約されています。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

図10-7 ナビゲーション・モデルへのページ問合せの追加

「図10-7 ナビゲーション・モデルへのページ問合せの追加」の説明

5. 「スコープ」フィールドはFrameworkアプリケーションに適用できないため(有効範囲は常に現在のアプリケーション)、このフィールドは空白のままにします。
有効範囲は、特定のページがページ問合せのルートとして指定されていない場合に、WebCenter Portal: Spacesでホーム・スペースまたは特定のスペース内のすべてのページを表示するかどうかを決定します。

6. 「パス」フィールドに、ページ問合せの開始点として使用するページ階層内のページに対応したXMLファイルのパスとファイル名を入力します。例:

/oracle/webcenter/portalapp/pagehierarchy/pages/pages.xml
/oracle/webcenter/portalapp/pagehierarchy/pages/productsPages.xml

7. 「ページ・テンプレート」ドロップダウン・リストから、ナビゲーションでリソースが選択されている場合にそのリソースを表示するために使用するページ・テンプレートを選択します。

8. 「ページ・スタイル」ドロップダウン・リストから、ナビゲーション・モデルに含めるページのスタイルを選択します。たとえば、「Wiki」を選択した場合、「Wiki」ページ・スタイルを使用するページのみがナビゲーションに含められます。

9. 「ページ可視性」ドロップダウン・リストから、階層で非表示としてフラグが付けられている場合でもページを含めるかどうかを選択します。

10. 「表示可能」フィールドで、リソースをナビゲーションに表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、リソースが常にすべてのユーザーに表示されることを意味します。リソースがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、リソースの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

注意:

リソースはセキュリティに基づいて自動的にフィルタ処理されます。ユーザーが特定のリソースへのアクセス権を持たない場合には、ナビゲーションがページにレンダリングされてもそのリソースは表示されません。

11. 「フォルダの内容の挿入」を選択し、階層のサブページを親ページのフォルダの下に表示するのではなく、ナビゲーションに直接表示します。

12. 「ページ問合せ属性」セクションで、リソースに目的の表示オプションを指定します。詳細は、第10.3.9項「リソースの表示オプションの設定方法」を参照してください。

13. 「ページ問合せパラメータ」セクションで、必要に応じて、ページ・テンプレートでサポートされている任意のパラメータの値を入力します。

14. ナビゲーション・モデル定義ファイルを保存します。

10.3.6 別のナビゲーション・モデルをナビゲーション・モデル内に埋め込む方法

ナビゲーション・モデルを相互にネストできます。たとえば、複雑なナビゲーション・モデルの場合、複数の個別のモデルに分割し、すべてを1つの包括的なナビゲーション・モデル内にネストしたほうが容易な場合もあります。ネストしたナビゲーション・モデルを使用して、ナビゲーション・モデルの開発を別々のユーザーに委任したり、ナビゲーションの別々の部分へのアクセスを制御したりできます。

ナビゲーション・モデルに別のナビゲーション・モデルを埋め込むには:

ヒント:

ナビゲーション・モデルに別のナビゲーション・モデルを埋め込むには、埋め込むナビゲーション・モデルをアプリケーション・ナビゲータからナビゲーション・モデルの「デザイン」ビューにドラッグ・アンド・ドロップします。

1. アプリケーション・ナビゲータで、リソースを追加するナビゲーション・モデルを右クリックし、「開く」をクリックします。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、リソースを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「ナビゲーション」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、もう少し説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
リソースがナビゲーション・モデルの最上位にある場合、IDをwc_navtitleまたはwcnav_externalIdにすることはできません。これらのIDは予約されています。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

図10-8 ナビゲーション・モデルへの別のナビゲーション・モデルの埋込み

「図10-8 ナビゲーション・モデルへの別のナビゲーション・モデルの埋込み」の説明

5. 「パス」フィールドで、次のように、埋め込むナビゲーション・モデルのナビゲーション・モデル定義ファイルの場所とファイル名を入力するか参照します。

/oracle/webcenter/portalapp/navigations/myNavigation2.xml

6. 「表示可能」フィールドで、リソースをナビゲーションに表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、リソースが常にすべてのユーザーに表示されることを意味します。リソースがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、リソースの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

注意:

リソースはセキュリティに基づいて自動的にフィルタ処理されます。ユーザーが特定のリソースへのアクセス権を持たない場合には、ナビゲーションがページにレンダリングされてもそのリソースは表示されません。

7. 「ナビゲーション属性」セクションで、リソースに目的の表示オプションを指定します。詳細は、第10.3.9項「リソースの表示オプションの設定方法」を参照してください。

8. ナビゲーション・モデル定義ファイルを保存します。

10.3.7 ナビゲーション・モデル・データを拡張する方法

ナビゲーション・モデルに既知のリソースを追加するだけでなく、実行時に動的に生成されるモデルにリソースを追加することも可能です。

この項には次のサブセクションが含まれます:

- 第10.3.7.1項「リンクをカスタム・リソースに追加する方法」

- 第10.3.7.2項「コンポーネントをナビゲーション・モデルに追加する方法」

- 第10.3.7.3項「カスタム・フォルダをナビゲーション・モデルに追加する方法」

- 第10.3.7.4項「カスタム・コンテンツ・プロバイダをナビゲーション・モデルに追加する方法」

10.3.7.1 リンクをカスタム・リソースに追加する方法

ページ、ポートレット、タスク・フローなどWebCenter Portal対応でサポートされる様々なリソースへのリンクを追加するには、適切な「タイプ」のリンクを追加してそのリソースのURLを指定します。詳細は、第10.3.4項「ページ、ポートレット、タスク・フロー、外部アプリケーションまたはWebページをナビゲーション・モデルに追加する方法」を参照してください。

サード・パーティのリソースにリンクする場合は、タイプ「その他」のリンクを追加し、サード・パーティのURLResourceFactory実装クラスを指定します。

リンクをカスタム・リソースに追加するには:

1. アプリケーション・ナビゲータで、リソースを追加するナビゲーション・モデルを右クリックし、「開く」をクリックします。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、リソースを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「リンク」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、もう少し説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
リソースがナビゲーション・モデルの最上位にある場合、IDをwc_navtitleまたはwcnav_externalIdにすることはできません。これらのIDは予約されています。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

5. 「タイプ」ドロップダウン・リストから、「その他」を選択します。

図10-9 ナビゲーション・モデルへのカスタム・リソースの追加

「図10-9 ナビゲーション・モデルへのカスタム・リソースの追加」の説明

6. 「ファクトリ・クラス」フィールドで、カスタム・リソースのURLを解決できるURLResourceFactory実装クラスを入力するか参照します。

7. 「URL」フィールドに、リソースにアクセスするためのURLを入力します。

8. 指定したページ・テンプレートを使用して、現在のページにリソースをレンダリングするには、「ページ・テンプレートでのURLのレンダリング」を選択します。
ナビゲーションでリソースが選択されると、現在のページがそのリソースで上書きされるようにするには、「URLにリダイレクト」を選択します。

9. 「表示可能」フィールドで、リソースをナビゲーションに表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、リソースが常にすべてのユーザーに表示されることを意味します。リソースがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、リソースの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

注意:

リソースはセキュリティに基づいて自動的にフィルタ処理されます。ユーザーが特定のリソースへのアクセス権を持たない場合には、ナビゲーションがページにレンダリングされてもそのリソースは表示されません。

10. 「URL属性」セクションで、リソースに目的の表示オプションを指定します。詳細は、第10.3.9項「リソースの表示オプションの設定方法」を参照してください。

11. 「URLパラメータ」セクションで、必要に応じて、選択したリソースでサポートしているパラメータの値を入力します。

12. ナビゲーション・モデル定義ファイルを保存します。

10.3.7.2 コンポーネントをナビゲーション・モデルに追加する方法

カスタム・コンポーネントをナビゲーション・モデルに追加できます。単一のADF Facesコンポーネント、2つ以上のコンポーネントを含む複合オブジェクト、内部に任意のHTMLコンテンツを追加できるJSF Verbatimタグなど、様々なコンポーネントを追加できます。カタログに追加可能な任意のHTMLの例は、YouTubeビデオです。

カスタム・コンポーネントを追加するには:

1. アプリケーション・ナビゲータで、リソースを追加するナビゲーション・モデルを右クリックし、「開く」をクリックします。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、リソースを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「コンポーネント」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、もう少し説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
リソースがナビゲーション・モデルの最上位にある場合、IDをwc_navtitleまたはwcnav_externalIdにすることはできません。これらのIDは予約されています。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

図10-10 ナビゲーション・モデルへのカスタム・コンポーネントの追加

「図10-10 ナビゲーション・モデルへのカスタム・コンポーネントの追加」の説明

5. 「コンポーネント・ファクトリ」フィールドに、oracle.adf.rc.component.XmlComponentFactoryなど、oracle.adf.rc.component.ComponentFactoryインタフェースを実装し、一連のパラメータに基づいてコンポーネントのインスタンスを作成するJavaクラスを入力または参照します。
名前を入力すると、クラスパスから有効なファクトリ・クラスがフィールドに自動的に入力されます。

詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

6. 「表示可能」フィールドで、リソースをナビゲーションに表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、リソースが常にすべてのユーザーに表示されることを意味します。リソースがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、リソースの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

注意:

リソースはセキュリティに基づいて自動的にフィルタ処理されます。ユーザーが特定のリソースへのアクセス権を持たない場合には、ナビゲーションがページにレンダリングされてもそのリソースは表示されません。

7. 「コンポーネント属性」セクションで、リソースに目的の表示オプションを指定します。詳細は、第10.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. ナビゲーション・モデル定義ファイルを保存します。

10.3.7.3 カスタム・フォルダをナビゲーション・モデルに追加する方法

実行時にコンテンツを動的に表示するように構成されるカスタム・フォルダをナビゲーション・モデルに追加できます。カスタム・フォルダはリソースを含むフォルダとして追加されません。つまり、リソースを動的に表示する、ファクトリ・クラスへのリファレンスのみが含まれます。

カスタム・フォルダを追加するには:

1. アプリケーション・ナビゲータで、リソースを追加するナビゲーション・モデルを右クリックし、「開く」をクリックします。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、リソースを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「カスタム・フォルダ」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、もう少し説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
リソースがナビゲーション・モデルの最上位にある場合、IDをwc_navtitleまたはwcnav_externalIdにすることはできません。これらのIDは予約されています。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

図10-11 ナビゲーション・モデルへのカスタム・フォルダの追加

「図10-11 ナビゲーション・モデルへのカスタム・フォルダの追加」の説明

5. 「パス」フィールドに、カスタム・フォルダのMDSパスを入力します。

6. 「初期コンテキスト・ファクトリ」フィールドで、javax.naming.spi.InitialContextFactoryインタフェースを実装して一連のパラメータに基づいてフォルダを生成するJavaクラスを入力または参照します。
詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

7. 「表示可能」フィールドで、リソースをナビゲーションに表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、リソースが常にすべてのユーザーに表示されることを意味します。リソースがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、リソースの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

注意:

リソースはセキュリティに基づいて自動的にフィルタ処理されます。ユーザーが特定のリソースへのアクセス権を持たない場合には、ナビゲーションがページにレンダリングされてもそのリソースは表示されません。

8. 「フォルダの内容の挿入」を選択し、カスタム・フォルダの内容をフォルダの下に表示するのではなく、ナビゲーションに直接表示します。

9. 「カスタム・フォルダ属性」セクションで、リソースに目的の表示オプションを指定します。詳細は、第10.3.9項「リソースの表示オプションの設定方法」を参照してください。

10. 「カスタム・フォルダ・パラメータ」セクションで、ファクトリ・クラスを実装する際に定義したパラメータを追加します。これらのパラメータは、アプリケーションのその他のアーティファクトにバインドできます。

11. ナビゲーション・モデル定義ファイルを保存します。

10.3.7.4 カスタム・コンテンツ・プロバイダをナビゲーション・モデルに追加する方法

カスタム・コンテンツ・プロバイダは、実行時に0以上のナビゲーション・アイテムを動的に生成します。これはカスタム・フォルダに非常に似ていますが、カスタム・フォルダでは、実行時にナビゲーション・モデルがレンダリングされると、空の場合でも必ずフォルダが表示される点が異なっています。カスタム・コンテンツ・プロバイダを使用すると、フォルダ内にコンテンツが存在する場合にのみ、実行時にフォルダが表示されます。

カスタム・コンテンツ・プロバイダを追加するには:

1. アプリケーション・ナビゲータで、リソースを追加するナビゲーション・モデルを右クリックし、「開く」をクリックします。

2. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、リソースを追加するナビゲーション・モデルのノードを選択します。

3. 「新しいノードを追加します」アイコンをクリックして、「カスタム・コンテンツ」を選択します。

4. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、もう少し説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
リソースがナビゲーション・モデルの最上位にある場合、IDをwc_navtitleまたはwcnav_externalIdにすることはできません。これらのIDは予約されています。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

図10-12 ナビゲーション・モデルへのカスタム・コンテンツ・プロバイダの追加

「図10-12 ナビゲーション・モデルへのカスタム・コンテンツ・プロバイダの追加」の説明

5. 「コンテンツ・プロバイダ」フィールドで、oracle.adf.rc.spi.plugin.catalog.CustomContentProviderV2インタフェースを実装するJavaクラスを入力または参照します。
詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

6. 「表示可能」フィールドで、リソースをナビゲーションに表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、リソースが常にすべてのユーザーに表示されることを意味します。リソースがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、リソースの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

注意:

リソースはセキュリティに基づいて自動的にフィルタ処理されます。ユーザーが特定のリソースへのアクセス権を持たない場合には、ナビゲーションがページにレンダリングされてもそのリソースは表示されません。

7. 「カスタム・コンテンツ属性」セクションで、リソースに目的の表示オプションを指定します。詳細は、第10.3.9項「リソースの表示オプションの設定方法」を参照してください。

注意:

通常、カスタム・コンテンツでは、属性を指定する必要がありません。コンテンツ・プロバイダで生成されたリソースの属性は、コンテンツ・プロバイダで指定されます。

8. 「カスタム・コンテンツ・パラメータ」セクションで、フォルダ上のパラメータを定義します。ここで定義するパラメータは、CustomContentProviderV2実装に渡され、この実装により解釈されます。

9. ナビゲーション・モデル定義ファイルを保存します。

10.3.8 ナビゲーション・モデルでリソースを編成する方法

フォルダをナビゲーション・モデルに追加して、リソースのサブセットを作成したり、類似したリソースをグループ化できます。また、セパレータを追加し、ナビゲーション・モデルをリソースのグループに分割することもできます。フォルダとセパレータにより、ページ内でレンダリングされる際にナビゲーション・モデルのアイテムを分類でき、アイテムの検索が簡単になります。

相互に関連してドラッグしたり、階層になるよう別のアイテム内でドラッグして、ナビゲーション・モデル内のアイテムを再配置できます。

リソースを編成するには:

1. アプリケーション・ナビゲータで、編成するリソースが属するナビゲーション・モデルを右クリックし、「開く」を選択します。

2. フォルダまたはセパレータを追加するには:

1. ナビゲーション・モデルの「デザイン」ビューの左側の「ナビゲーション」列で、フォルダまたはセパレータを追加するナビゲーション・モデルのノードを選択します。

2. 「新しいノードを追加します」アイコンをクリックして、「フォルダ」または「セパレータ」を選択します。

3. 「ID」フィールドには自動的に生成されたIDが移入されます。このIDを保持することはできますが、もう少し説明的なIDに変更することもできます。IDはナビゲーション・モデル内で一意である必要があります。
リソースがナビゲーション・モデルの最上位にある場合、IDをwc_navtitleまたはwcnav_externalIdにすることはできません。これらのIDは予約されています。

ヒント:

IDが一意ではないか、IDに無効な文字を入れた場合、フィールドの境界線が赤くなります。

4. 「表示可能」フィールドで、リソースをナビゲーションに表示するかどうかを指定します。デフォルト値はEL式#{true}です。これは、リソースが常にすべてのユーザーに表示されることを意味します。リソースがすべてのユーザーに対して常に非表示になるようにするにはfalseまたは#{false}を入力します。あるいは、リソースの表示条件を指定するEL式を入力します。フィールドが空の場合、値はデフォルトでtrueになります。

3. リソースをナビゲーション・モデル内に移動するには、アイテムを選択して目的の場所にドラッグします。

4. 1つのリソース(子アイテム)を別のリソース(親アイテム)の下にインデントさせるには、子アイテムを選択して親アイテムの最上位にドラッグします。

5. リソースの親を変更するには、右クリックして「親の変更」を選択します。

6. ナビゲーション・モデル定義ファイルを保存します。

10.3.9 リソースの表示オプションの設定方法

様々なリソース用表示オプションを指定して、ナビゲーションがページ上でレンダリングされる際の外観と動作を決定できます。使用できる表示オプションは、リソースのタイプの応じて異なります。

リソースの表示オプションを設定するには:

1. アプリケーション・ナビゲータで、表示オプションを設定するリソースが属するナビゲーション・モデルを右クリックし、「開く」を選択します。

2. ナビゲーション・モデルの「デザイン」ビュー内の、左側にある「ナビゲーション」列でリソースを選択します。

3. 「URL属性」パネルで、「追加」アイコンをクリックして設定する属性を選択します。表10-0に、使用可能な属性を示します。

表10-2 リソースの属性

属性

説明

タイトル

ナビゲーション・モデルがページにレンダリングされる際にリソースに対して表示されるタイトル。

アクセス・キー

ユーザーがマウスを使用せずにリソースにアクセスする際に入力するキーのニーモニック(単一文字)。

説明

リソースの説明。

アイコンURI

リソースを視覚的に表すアイコン。これは、ナビゲーション・モデルがページにレンダリングされる際にタイトルの隣に表示されます。

件名

リソースの検索を容易にするキーワード。

ターゲット

リソースが選択された際に表示されるコンテナ・ページ上の場所。同一のブラウザ・ウィンドウ(_self)、新規ウィンドウ(_blank)、ポップアップ(_popup)のいずれかか、ナビゲーションUIでサポートされるその他の場所となります。

注意: ポップアップはページではサポートされていません。

ツールチップ

ユーザーがマウスをタイトル上に置いたときにリソースに関する追加情報を提示するテキスト。

変更済

リソースの最終変更日。この属性は、サイト・マップの作成に使用されます。

変更頻度

リソースが変更される頻度(always、hourly、daily、weekly、monthly、yearly、never)。この属性は、サイト・マップの作成に使用されます。

重要性

ナビゲーション・モデル内のその他のリソースに対するこのリソースの優先度(0.0から1.0)。この属性は、サイト・マップの作成に使用されます。

外部ID

ページの静的リンクからナビゲーション・モデル内のノードへ直接参照できるID。

この属性が定義されたデフォルトのナビゲーション・モデルのノードヘは、ページのaf:goLinkコンポーネントから/faces/wcnav_externalId/externalIdを使用するか、ナビゲーション・モデル内の「外部リンク」ナビゲーション・アイテムから/wcnav_externalId/externalIdを使用してアクセスできます。それ以外に、その階層を使用してノードにアクセスする方法があり、この方が速くアクセスできますが、アプリケーションの開発につれて変更される可能性があります。

デフォルト以外のナビゲーション・モデルのノードに直接アクセスするには、たとえば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.xml

4. 「値タイプ」ドロップダウン・リストから、次のいずれかを選択します。

- リテラル文字列 - 属性に対する値として文字列を指定します

- リソース・バンドル - リソース・バンドルを使用して、属性のローカライズ値を指定します。

5. 「表示値」フィールドに、属性の値を入力します。リソース・バンドルを使用している場合、「参照」アイコンをクリックしてローカライズ値を検索するリソース・バンドルを選択します。

6. ナビゲーション・モデル定義ファイルを保存します。

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

デフォルトのナビゲーション・モデルには、デフォルトでアプリケーションが使用する必要のあるナビゲーション・モデルを選択するのに便利な方法が用意されています。ページ・テンプレート・デザイナは、このデフォルトのナビゲーション・モデルを、実際の名前がわからなくても参照できます。たとえば、ナビゲーションEL式では、#{navigationContext.defaultNavigationModel}のように、デフォルトのナビゲーション・モデルが参照されることが多くあります。

最初にFrameworkアプリケーションを作成すると、シードされたナビゲーション・モデル(default-navigation-model.xml)がデフォルトのナビゲーション・モデルとして設定されます。続いて独自のナビゲーション・モデルを作成すると、使用するたびにこのナビゲーション・モデルを明示的に参照するのではなく、それをデフォルトとして設定できます。

アプリケーションにデフォルトのナビゲーション・モデルを設定するには、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プリファレンス

<portal:adf-portal-config>
<preferences>
...
<preference id="oracle.webcenter.portalapp.navigation.model"
desc="Default Navigation Model"
value="oracle/webcenter/portalapp/navigations/myNavigationModel.xml"
resourceType="navigation" display="true"/>
...
</preferences>
</portal:adf-portal-config>

5. adf-config.xmlファイルを保存します。

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

ナビゲーション・レンダラは、次のようなページ以外のナビゲーション・リソースをレンダリングする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.6 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.7 ナビゲーション・モデルの実行時管理の有効化

Frameworkアプリケーションのリソース・マネージャを使用すると、管理者権限のあるユーザーは、ナビゲーション・モデルなどポータル・リソースを実行時に作成および変更できるようになります。リソース・マネージャでナビゲーションを公開することによって、管理者は実行時にそのナビゲーションを管理できます。アプリケーションのデプロイ後にさらにナビゲーションを作成して公開する場合には、JDeveloperからランタイム・アプリケーションにそれらのナビゲーションを公開できます。

注意:

実行時にナビゲーション・モデルを作成した場合に、設計時環境にインポートして戻さないときは、新規ナビゲーション・モデルがアプリケーションの再デプロイ時に失われることがあります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のリソース・カスタマイズの保存に関する項を参照してください。

リソース・マネージャでナビゲーションを公開するには、第16.2.1項「リソースをリソース・マネージャに追加する方法」を参照してください。

ナビゲーション・レジストリ・ファイル(navigation-registry.xml)を編集して、実行時にユーザーがナビゲーション・モデルに追加できるリソースを正確に制御することもできます。

ナビゲーション・モデルの実行時の機能については、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の章ナビゲーションの使用に関する項を参照してください。

この項には次のサブセクションが含まれます:

- 第10.7.1項「ナビゲーション・レジストリ・ファイルの編集方法」

- 第10.7.2項「デプロイしたナビゲーション・モデルのさらなる開発を有効にする方法」

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

ナビゲーション・レジストリは、ユーザーが実行時にナビゲーション・モデルに追加できるリソースを登録するための専用リソース・カタログです。各Frameworkアプリケーションには、アプリケーションの作成時に作成される1つのナビゲーション・レジストリ・ファイルnavigation-registry.xmlが含まれます。このファイルを編集して、含めるリソースを変更できます。たとえば、ユーザーが実行時に他のナビゲーション・モデルを埋め込むことができないようにする場合、ナビゲーション・リファレンス・リソースをナビゲーション・レジストリから削除できます。

ナビゲーション・レジストリを編集するには:

1. アプリケーション・ナビゲータで、navigation-registry.xmlファイルを右クリックします。

ヒント:

このファイルは、Application_Root/oracle/webcenter/portalapp/navigationsの下にあります。

2. このファイルをその他のリソース・カタログと同じ方法で編集します。詳細は、第15.2.3項「リソース・カタログのコンテンツの管理方法」を参照してください。
次のリソースをナビゲーション・レジストリに追加できます。

- フォルダ

- リンク

- タスク・フロー

- ポートレット

- コンテンツ

- その他

- リソース・カタログ

- コンポーネント

- カスタム・フォルダ

- カスタム・コンテンツ

ナビゲーション・レジストリの既存のリソースを変更および削除して、レジストリのリソースを再配置することもできます。

3. 終了したら、navigation-registry.xmlファイルを保存します。

10.7.2 デプロイしたナビゲーション・モデルのさらなる開発を有効にする方法

シード済ナビゲーション・モデルをリソース・マネージャで変更または削除することはできません。管理権限のあるユーザーは、シード済ナビゲーション・モデルのコピーを作成してそれを編集または削除することも、独自のナビゲーション・モデルを作成することもできます。

ユーザーがナビゲーション・モデルを実行時に作成または編集する場合は、さらなる拡張のためにJDeveloperにナビゲーション・モデルを戻す必要があることがあります。これを実行するには、デプロイ済アプリケーションからナビゲーション・モデルをダウンロードし、JDeveloperで編集して、アプリケーションにアップロードして戻します。設計時、このタイプのラウンドトリップ開発には、ダウンロードしたナビゲーション・モデルのインポート、JDeveloperでの編集、およびデプロイ済アプリケーションにアップロードして戻すためのエクスポートが含まれます。

また、アプリケーションのデプロイ後に新規ナビゲーション・モデルを作成した場合、JDeveloperからそのナビゲーション・モデルをエクスポートして、それをデプロイ済アプリケーションにアップロードできます。

この項では、JDeveloperでナビゲーション・モデルをインポートおよびエクスポートする方法について説明します。次のサブセクションが含まれます:

- 第10.7.2.1項「ナビゲーション・モデルのインポート」

- 第10.7.2.2項「ナビゲーション・モデルのエクスポート」

ラウンドトリップ開発の詳細は、第16.4項「リソースのラウンドトリップ開発の有効化」を参照してください。

10.7.2.1 ナビゲーション・モデルのインポート

リソース・マネージャからナビゲーション・モデルをダウンロードすると、EARファイルが作成されます。JDeveloperにEARファイルをインポートする際には、EARファイルのファイルは、フォルダApplication_Root/Portal/public_html/oracle/webcenter/siteresources/scopedMD/scope_GUIDに抽出されます。設計時の他のナビゲーション・モデルと同じように、ナビゲーション・モデルを開いて編集できます。編集後に、更新済のナビゲーション・モデルをデプロイ済アプリケーションにエクスポートする必要があります。

リソースのインポートの詳細な手順は、第16.4.2項「ポータル・リソースをJDeveloperにインポートする方法」を参照してください。

10.7.2.2 ナビゲーション・モデルのエクスポート

次の理由でエクスポートの実行が必要になります。

- すでにデプロイしたアプリケーションで新規ナビゲーション・モデルを公開します。

- デプロイしたアプリケーションからインポートして変更したナビゲーション・モデルをコピーして戻します。

JDeveloperからナビゲーション・モデルをエクスポートすると、EARファイルが作成されます。管理者権限のあるユーザーは、この後、リソース・マネージャを使用してこのEARファイルをデプロイしたアプリケーションにアップロードできます。

リソースのエクスポートの詳細な手順は、第16.4.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

10.8 WebCenter Portal: Spacesのナビゲーション・モデルの使用

WebCenter Portal: Spacesには、そのまま各自のスペースで使用できるシード済ナビゲーション・モデルが用意されています。これらのデフォルトのナビゲーション・モデルが要件に適さない場合には、WebCenter Portal: Spaces内で独自のナビゲーション・モデルを作成できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のナビゲーションの使用に関する項を参照してください。

ただし、WebCenter Portal: Spacesでは、必要とするすべての機能を備えたナビゲーション・モデルを作成するためのコントロール機能がすべて提供されていない可能性があります。そのような場合、JDeveloperでは、もともとWebCenter Portal: Spacesで作成したナビゲーション・モデルを編集して、WebCenter Portal: Spacesにアップロードして戻すことが可能です。

WebCenter Portalには特別なJDeveloperワークスペース(DesignWebCenterSpaces.jws)が用意されており、ナビゲーション・モデルなどのリソースを開発してWebCenter Portal: Spacesにアップロードする際に利用できます。第55章「JDeveloperを使用したSpacesアプリケーションの拡張」には、サンプルのワークスペースの場所、およびWebCenterSpacesResourcesプロジェクトを使用してカスタムのナビゲーション・モデルやWebCenter Portal: Spacesのその他のタイプのリソースを作成する方法が記載されています。

JDeveloperでWebCenter Portal: Spacesナビゲーション・モデルを使用している場合、次の点を考慮してください。

- WebCenter Portal: Spacesナビゲーション・モデルで必要なすべてのリソースは、WebCenter Portal: Spaces内に存在します。したがって、WebCenter Portal: Spacesナビゲーション・モデルを再構成して少し編集するには、JDeveloperのみを使用してください。最初に、WebCenter Portal: Spacesで可能なかぎりのナビゲーション・モデルを作成し、必要なリソースを追加する必要があります。その後、JDeveloperを使用してリソースの順番を調整し、すべての必要な属性とパラメータを設定できます。

- JDeveloperを使用してWebCenter Portal: Spacesナビゲーション・モデルにリソースを追加する場合には、リソースの「情報」ダイアログにアクセスしてWebCenter Portal: SpacesからリソースIDを取得する必要があります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリソースに関する情報の表示に関する項を参照してください。

- リソースをWebCenter Portal: Spacesナビゲーション・モデルに追加する際には、リソースへのパスを手動で入力する必要があります。「参照」アイコンは使用できません。たとえば、ページへのリンクを入力するには、WebCenter Portal: SpacesでページのIDを識別し、次にpage://pathToXmlFileのように値を手動で入力する必要があります。

11 ポータルのルック・アンド・フィールの設計

ポータルの構築時は、ポータルのルック・アンド・フィールを決定することが重要です。また、ルック・アンド・フィールがポータル全体で整合性を持つようにするとよいです。ポータル・ページ全体にわたるこの種類の整合性は、ページ・テンプレートおよびページ・スタイルを使用して実現できます。

この章では、ページ・テンプレートおよびページ・スタイルの作成と管理に関する情報を提供します。また、実行時にタスク・フローを作成する際に使用できるマッシュアップ・スタイルを作成する方法について説明します。次のサブセクションが含まれます:

- 第11.1項「ページ・テンプレートおよびページ・スタイルの概要」

- 第11.2項「ページ・テンプレートの使用」

- 第11.3項「ページ・スタイルの使用」

- 第11.4項「マッシュアップ・スタイルの使用」

11.1 ページ・テンプレートおよびページ・スタイルの概要

ページ・テンプレートでは、ユーザーの画面に個々のページおよびページ・グループをどのように表示するかが定義されます。ページ・テンプレートを使用してページを表示する場合、それらのページでは常に、アプリケーション全体の構造およびレイアウトにおいて整合性が確保されます。たとえば、「サイド・ナビゲーション - フロー」ページでは、ページの左側にナビゲーション・パネルが表示され、メイン・コンテンツ領域内の各コンポーネントのサイズは、その子のサイズに基づいて計算されます。

一方、ページ・スタイルでは、ポータルの新しいページについて、レイアウトや(場合によっては)初期コンテンツが決定されます。たとえば、Webページ・スタイルには1列のレイアウトがあり、このスタイルを使用すると、ユーザーはアプリケーションに外部Webコンテンツを公開できます。また、空白のページ・スタイルには1列のレイアウトがあり、このスタイルに基づいたページにユーザーが追加できるコンテンツのタイプにいくつかの制限が設けられます。

ページ・テンプレートおよびページ・スタイルは、JDeveloperで作成および公開できるJSPXページです。ページ・テンプレートは、設計時および実行時のポータル・ページ作成に使用できる一方、ページ・スタイルは、実行時のページ作成にのみ使用できます。この項では、設計時に作成できる様々なページ・テンプレートおよびページ・スタイルについて説明します。次のサブセクションが含まれます:

- 第11.1.1項「ページ・テンプレート」

- 第11.1.2項「ページ・スタイル」

- 第11.1.3項「マッシュアップ・スタイル」

- 第11.1.4項「コンテンツ・プレゼンタ表示テンプレート」

注意:

スキンも、アプリケーションの背景色、画面フォント、および一部のスキンの場合のアプリケーションのボタンとアイコンに使用する図形やイメージを指定することによって、ポータルのルック・アンド・フィールの定義に使用できます。ただし、スキンについては、この章では説明していません。詳細は、第14章「スキンの作成および管理」を参照してください。

11.1.1 ページ・テンプレート

ページ・テンプレートでは通常、ポータル・アプリケーションのページのレイアウトおよびデフォルトのナビゲーション・モデルが定義されます。ページ・テンプレートは、共通のルック・アンド・フィールを提示します。図11-1に、ページ・テンプレートに基づくサンプル・ポータルを示します。このサンプルの内容は次のようになります。

- 会社ロゴが表示され、サインイン、カスタマ・サービスおよびホームのリンクが含まれるヘッダー。

- ポータル内の別のリソースにアクセスするためのデフォルトのタブ・ナビゲーション。

- ログイン・タスク・フローといくつかの便利なリンクが備わったサイドバー。

- 著作権情報といくつかの免責事項が記載されたフッター。

- コンテンツを追加するための中央領域。

図11-1 ページ・テンプレートを使用するサンプル・ポータル

「図11-1 ページ・テンプレートを使用するサンプル・ポータル」の説明

ページ・テンプレートは、参照ベースであり、継承を使用します。つまり、ページ・テンプレートを変更すると、そのテンプレートを参照するすべてのページで自動的にその変更が継承されます。JDeveloperでページ・テンプレートを作成および公開でき、設計時と実行時の両方で、ページの作成に使用できます。図11-2に示すように、設計時に「JSFページの作成」ダイアログでページ・テンプレートを選択できます。

図11-2 「JSFページの作成」ダイアログの「ページ・テンプレート」オプション

図11-3で示しているように、実行時には、アプリケーションの「構成」ページでページ・テンプレートを選択することによって、そのページ・テンプレートを適用できます。

図11-3 アプリケーションの「構成」ページの「ページ・テンプレート」オプション

図11-4で示しているように、管理者または受任者は、公開されたページ・テンプレートをリソース・マネージャで管理できます。

図11-4 リソース・マネージャ内のページ・テンプレート

「図11-4 リソース・マネージャ内のページ・テンプレート」の説明

詳細は、第11.2項「ページ・テンプレートの使用」を参照してください。

11.1.2 ページ・スタイル

ページ・スタイルは、実行時に作成するページに使用するJSPXページです。ページ・スタイルには、新規作成されたページのレイアウトが示され、ページでサポートされるコンテンツ・タイプも示される場合があります。

ユーザーがページ・スタイルを使用してページを作成する場合、レイアウトと初期コンテンツが、ページ・スタイルから新規作成されたページにコピーされます。ページ・テンプレートとは異なり、ページ・スタイルは参照ベースではありません。つまり、ページ・スタイルを変更しても、その変更は、スタイルを使用するページに継承されません。

通常、ページ・スタイルには、指定したページの有用性と外観を強化するコンポーネントが含まれます。これらのコンポーネントには、インプレースHTMLテキスト・エディタ、イメージ、レイアウト・ボックス、ハイパーリンクなどが含まれます。コンテンツ・コントリビュータを使用すると、ページにコンテンツをさらに移入できます。図11-5は、ページ・スタイルに基づいたポータル・ページのサンプルを示しています。

図11-5 ページ・スタイルを使用したページのサンプル

JDeveloperでページ・スタイルを作成できますが、それらのページ・スタイルは、実行時にページを作成する際にのみ使用されます。アプリケーションで公開するページ・スタイルは、次のように使用および管理できます。

- 図11-6で示しているように、管理者または受任者は、公開されたページ・スタイルをリソース・マネージャで管理できます。

図11-6 リソース・マネージャ内のページ・スタイル

「図11-6 リソース・マネージャ内のページ・スタイル」の説明

- ユーザーは、使用可能なページ・スタイルに基づいてページを作成できます。リソース・マネージャでは、「ページの作成」オプションを使用できます。このオプションは、ページ - 新規作成タスク・フローが含まれるその他のアプリケーション・ページでも使用できます。ユーザーが「ページの作成」オプションをクリックすると、図11-7に示しているように、「ページの作成」ダイアログに一連の事前定義済スタイルが表示されます。ユーザーは、スタイルを選択し、それに基づいてページを作成できます。レイアウトが新規ページにすでに配置されているため、ユーザーはページの様々な領域にコンテンツを追加するだけです。

図11-7 デフォルトのスタイルの「ページの作成」ダイアログ

「図11-7 デフォルトのスタイルの「ページの作成」ダイアログ」の説明

JDeveloperでページ・スタイルを作成する手順の詳細は、第11.3項「ページ・スタイルの使用」を参照してください。実行時のページ・スタイル管理の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページ・スタイルの使用に関する項を参照してください。

11.1.3 マッシュアップ・スタイル

マッシュアップ・スタイルは、ページ・スタイルとさほど違いはありませんが、タスク・フローを作成するために実行時に使用される点が異なります。またビジネス・マッシュアップとも言われます。

マッシュアップ・スタイルは、マッシュアップを作成するために実行時にのみ使用されますが、JDeveloperで作成および公開することができます。詳細は、第11.4項「マッシュアップ・スタイルの使用」を参照してください。

図11-8で示しているように、管理者または受任者のみが、公開されたマッシュアップ・スタイルを実行時リソース・マネージャで作成および管理できます。

図11-8 リソース・マネージャ内のマッシュアップ・スタイル

「図11-8 リソース・マネージャ内のマッシュアップ・スタイル」の説明

マッシュアップ・スタイルは、「新規タスク・フローの作成」ダイアログ・ボックス(図11-9)に表示されます。このボックスは、「リソース・マネージャ - タスク・フローでの作成」ページをクリックすると起動します。ユーザーは、そのスタイルに基づいて、スタイルを選択してマッシュアップを作成できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のタスク・フローの作成と管理に関する項を参照してください。

図11-9 デフォルトのスタイルが表示される「新規タスク・フローの作成」ダイアログ

「図11-9 デフォルトのスタイルが表示される「新規タスク・フローの作成」ダイアログ」の説明

11.1.4 コンテンツ・プレゼンタ表示テンプレート

コンテンツ・プレゼンタ表示テンプレートは、コンテンツ・プレゼンタがFrameworkアプリケーション・ページでコンテンツ・アイテムをレンダリングする方法の定義に使用されます。ページ・スタイルおよびマッシュアップ・スタイルと同様に、コンテンツ・プレゼンタ・テンプレートも、リソース・マネージャで実行時に管理できます。これらのテンプレートについては、この章では説明していません。詳細は、第28章「コンテンツ・プレゼンタ表示テンプレートの作成」を参照してください。

11.2 ページ・テンプレートの使用

「JSFページの作成」ダイアログで、任意の数のカスタム・ページ・テンプレートを作成して、それらをユーザーに公開できます。この項では、ページ・テンプレートの作成およびページ・テンプレートの実行時管理の有効化に関する情報を提供します。次のサブセクションが含まれます:

- 第11.2.1項「WebCenter Portalアプリケーション・シード済ページ・テンプレートの概要」

- 第11.2.2項「ページ・テンプレートを作成する方法」

- 第11.2.3項「WebCenter Portalアプリケーションのページ・テンプレート作成に関する必要な知識」

- 第11.2.4項「ページ・テンプレートの実行時切替えの有効化」

- 第11.2.5項「ページ・テンプレートを編集する方法」

- 第11.2.6項「ページ・テンプレートを削除する方法」

- 第11.2.7項「ページ・テンプレートの実行時管理を有効にする方法」

- 第11.2.8項「デプロイしたページ・テンプレートのさらなる開発を有効にする方法」

- 第11.2.9項「WebCenter Portal: Spacesのページ・テンプレートを作成および管理する方法」

11.2.1 WebCenter Portalアプリケーション・シード済ページ・テンプレートの概要

WebCenter Portalアプリケーション・テンプレートを使用してアプリケーションを作成するときに、「標準ポータル機能のアプリケーションの構成」オプションを選択した場合、2つのシード済テンプレートpageTemplate_globe.jspxおよびpageTemplate_swooshy.jspxがアプリケーションに追加されます。

図11-10 アプリケーション・ナビゲータ内のシード済ページ・テンプレート

「図11-10 アプリケーション・ナビゲータ内のシード済ページ・テンプレート」の説明

これらのテンプレートは双方とも、基本的に同じ機能を提供しますが、グラフィックは異なります。これらのテンプレートには、次の機能が含まれます。

1. ポータルのホーム・ページへのリンク

2. タグ・ライン

3. ようこそメッセージ

4. シード済「管理」ページへのリンク

5. ユーザーのログイン時にログアウト・リンクに変換されるログイン領域

6. ナビゲーション・バー

7. テンプレートに基づいてページにコンテンツを追加するための領域

8. 著作権情報

図11-11に、前述の各機能がコールアウトされるpageTemplate_globe.jspxページ・テンプレートを示します。

図11-11 pageTemplate_globe.jspxシード済ページ・テンプレート

「図11-11 pageTemplate_globe.jspxシード済ページ・テンプレート」の説明

特定の要件を満たすようにこのデフォルトのページ・テンプレートを編集することも、さらに一般的には、独自のページ・テンプレートを作成することもできます。独自のページ・テンプレートの作成を選択した場合でも、シード済ページ・テンプレートは、独自のテンプレートで実現できる様々なものを見つける際に役立つツールです。

11.2.2 ページ・テンプレートを作成する方法

WebCenterアプリケーションに固有のページ・テンプレートの側面については、次の項で説明しています。JSFページ・テンプレートの一般情報は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のページ・テンプレートの使用に関する項を参照してください。

ページ・テンプレートを作成するには:

1. アプリケーション・ナビゲータで、ページ・テンプレートを作成するノード(たとえば、/oracle/webcenter/portalapp/pagetemplates)を右クリックし、「新規」を選択します。

2. 「新規ギャラリ」で、「Web層」を開き、「JSF」を選択して、「JSFページ・テンプレート」を選択し、「OK」をクリックします。

3. 「JSFページ・テンプレートの作成」ダイアログ(図11-12)で、「ファイル名」フィールドに、ページ・テンプレートを表すJSPXファイルの名前(myCompanyPageTemplate.jspxなど)を入力します。
このファイル名によって、アプリケーション・ナビゲータでページ・テンプレートが識別されます。

図11-12 「JSFページ・テンプレートの作成」ダイアログ

「図11-12 「JSFページ・テンプレートの作成」ダイアログ」の説明

4. 「ディレクトリ」フィールドに、ページ・テンプレートを作成する場所のフル・ディレクトリ・パスを入力します。

注意:

WebCenter Portalアプリケーションにおいて、実行時リソース・マネージャで新規ページ・テンプレートを公開するには、ページ・テンプレートをApplication_Root/Portal/public_html/oracle/webcenter/portalappディレクトリに作成する必要があります。

5. 「ページ・テンプレート名」フィールドに、ページ・テンプレートの表示名を入力します。
表示名は、JSFページの作成ウィザードの「ページ・テンプレート」ドロップダウン・リストに表示され、ユーザーがこのテンプレートを選択して新規作成ページに使用できるようになります。このため、このテンプレートの使用対象のページ・タイプをユーザーが簡単に識別できるようなページ・テンプレート名にする必要があります。

6. ページ・テンプレートとして、いずれかの事前定義済レイアウトを使用する場合は、「クイック・スタート・レイアウトの使用」を選択します。

7. ページ・テンプレートにADFm Modelデータ・バインディングを使用する場合は、「関連ADFmページ定義の作成」を選択します。
ページ定義をページ・テンプレートに関連付けると、モデル要素が含まれるオブジェクト(タスク・フローやポートレットなど)をページ・テンプレートに組み込むことができるようになります。また、ユーザーは、実行時に別のページ・テンプレートに切り替えることができるようになります。

注意:

シード済ページ・テンプレートにはすべて関連ページ定義があるため、WebCenter Portalアプリケーションでページ・テンプレートを作成する場合はこのオプションを選択することを強くお薦めします。アプリケーション内では、すべてのページ・テンプレートに関連ページ定義があるか、それとも関連ページ定義があるページ・テンプレートはないかのいずれかである必要があります。

関連ページ定義のあるページ・テンプレートと、関連ページ定義のないページ・テンプレートを組み合せると、ユーザーは実行時にテンプレートを切り替えることができなくなります。

このオプションを選択したら、「モデル・パラメータ」タブをクリックして、「新規」アイコンをクリックし、ADFm宣言データ・バインディング・レイヤーで設定されるデータ・バインドされたコンポーネントにモデル・パラメータを定義できます。これらのパラメータの値は、コール元のページによって実行時に設定できます。

注意:

デフォルトで、ページ・テンプレート定義名は、ページ・テンプレート名に基づいて付けられます。ページ定義を別の名前で作成しないでください。

8. 「ファセット定義」タブをクリックして、ページ・テンプレートを使用して作成したページにコンテンツを挿入できるようにする、ページ・テンプレート内の領域を定義します。WebCenter Portalアプリケーションでの使用が意図されたページ・テンプレートには、contentというファセット定義を少なくとも1つは含める必要があります。

1. 「新規」アイコンをクリックして、「ファセット定義」タブに新規行を追加します。

2. 新規ファセット定義の「名前」フィールドに、contentと入力します。

3. 「説明」フィールドに、たとえばMain content areaなど、ファセット定義の簡単な説明を入力します。

4. 必要に応じて、追加のファセット定義を作成します。

5. ページ・テンプレート内の必要な場所にファセットを追加する方法は、手順12を参照してください。

例11-1に、pageTemplate_globe.jspxシード済WebCenter Portalアプリケーション・ページ・テンプレートの<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. 「属性」タブをクリックして、「新規」アイコンをクリックし、テンプレートを使用するページからテンプレート自体に値を渡すための属性を定義します。これらの値をページ・テンプレートで使用することにより、テンプレートを使用する個々のページに実際に表示されるものを制御できるようになります。
たとえば、pageTemplate_globe.jspx WebCenter Portalアプリケーション・シード済ページ・テンプレートには、シード済「管理」ページへのリンクが含まれます。現行ページが「管理」ページである場合、リンクの表示は必要ありません。テンプレートでは、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 value="#{bindings.pageTemplateBinding.templateModel}" id="pt1">
<f:attribute name="isAdminPage" value="#{true}"/>

シード済ページ・テンプレートには、そのほか次の属性が含まれています。

<attribute>
<attribute-name>contentWidth</attribute-name>
<attribute-class>java.lang.String</attribute-class>
<default-value>960px</default-value>
</attribute>

<attribute>
<attribute-name>showNavigation</attribute-name>
<attribute-class>java.lang.Boolean</attribute-class>
<default-value>#{true}</default-value>
</attribute>

<attribute>
<attribute-name>showGreetings</attribute-name>
<attribute-class>java.lang.Boolean</attribute-class>
<default-value>#{securityContext.authenticated}</default-value>
</attribute>

<attribute>
<attribute-name>showLogin</attribute-name>
<attribute-class>java.lang.Boolean</attribute-class>
<default-value>#{true}</default-value>
</attribute>

<attribute>
<attribute-name>showAdmin</attribute-name>
<attribute-class>java.lang.Boolean</attribute-class>
<default-value>
#{WCSecurityContext.userInAppRole['Administrator']}
</default-value>
</attribute>

10. 「OK」をクリックします。
ページ・テンプレートが作成され、ビジュアル・エディタで開かれます。

11. コンポーネント・パレットからコンポーネントをドラッグして、ビジュアル・エディタ内のページ・テンプレートにドロップします。
ナビゲーションUIは、ページ・テンプレートの重要な側面です。ナビゲーションUIをページ・テンプレートに追加する処理の詳細は、第13章「ポータル・ナビゲーションの視覚化」を参照してください。

ポートレット、タスク・フロー、コンテンツなど、その他のリソースをページ・テンプレートに追加する処理の詳細は、第12章「ポータルへのリソースの追加」を参照してください。

ページ・テンプレートで提供できるその他の機能として、ログイン/ログアウトや検索のフィールドがあります。シード済ページ・テンプレートには、ログイン・フォームの例が含まれています。

ページ・テンプレート全体で、式言語(EL)式を使用して、定数値のかわりに変数値を指定できます。一般的なEL式については、付録F「式言語式」を参照してください。

12. ユーザーがページ・テンプレートに基づいたページに独自のコンテンツを配置できるページ・テンプレート内の領域について、次の操作を行います。

1. コンポーネント・パレットから「FacetRef」コンポーネントをドラッグし、ページ・テンプレート内の該当する場所にそれをドロップします。

2. ファセット参照の挿入ダイアログで、ファセット名ドロップダウン・リストから、ページ・テンプレートのこの領域に使用するファセットを選択します。新しいファセット名を入力する場合、JDeveloperでは、ページ・テンプレート定義ファイルに新しいファセット定義を作成します。

例11-5は、pageTemplate_globe.jspx WebCenter Portalアプリケーション・シード済ページ・テンプレートにコンテンツ・ファセットが組み込まれる方法を示しています。

例11-5 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>

11.2.3 WebCenter Portalアプリケーションのページ・テンプレート作成に関する必要な知識

WebCenter Portalアプリケーションで使用するためにページ・テンプレートを作成する場合、次を考慮してください。

- ページ・テンプレートをリソース・マネージャで必ず公開できるように、/oracle/webcenter/portalappディレクトリ内にページ・テンプレートのJSPXファイルを作成します。すぐに使用できるように、ページ・テンプレートを格納できるpagetemplatesサブディレクトリがすでに用意されています。

- シード済ページ・テンプレートは、独自のページ・テンプレートに組み込むことができる機能の例が用意されている貴重なソースです。シード済ページ・テンプレートに基づいてページ・テンプレートを作成するのではない場合でも、シード済ページ・テンプレートはアイデアをつかむ上で検討に値します。たとえば、シード済ページ・テンプレートには、再利用できるログイン・フォームが含まれています。シード済ページ・テンプレートには、ナビゲーションUIの有用な例も含まれています。

- 「ページ・テンプレートの作成」ダイアログで、「関連ADFmページ定義の作成」オプションを選択する必要があります。このオプションを選択しないと、ユーザーが実行時にページ・テンプレートを切り替えることができなくなります。ページ・テンプレートの切替えが機能するように、次のいずれかの条件を満たす必要があります。

- アプリケーション内のすべてのページ・テンプレートに関連ページ定義があります。

- アプリケーション内のいずれのページ・テンプレートにも関連ページ定義がません。

このため、WebCenter Portalアプリケーション・テンプレートで提供されるシード済ページ・テンプレートには関連ページ定義があるので、ページ・テンプレートの切替えが機能するように、このアプリケーション内で作成する他のページ・テンプレートにもページ・テンプレートの関連ページ定義を指定する必要があります。

- ページ・テンプレートには少なくとも1つのファセット定義を含める必要があり、そのファセット定義の名前をcontentにする必要があります。

- ページ・テンプレートによって参照されるナビゲーション・モデルに、mailto:リンクを使用する外部リンク・ナビゲーション・アイテムが含まれる場合、ページ・テンプレートではこれらのアイテムを明示的に処理する必要があります。例11-6では、JSTLを使用してナビゲーション・アイテムのexternalURLを調査し、これが文字列mailto:で開始しているかどうかを確認しています。その文字列で開始している場合は、ADF Faces goLinkコンポーネントを使用してリンクがレンダリングされます。

例11-6 「mailto:」リンクのレンダリング

...
<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>
...

- ページ・テンプレートに、コンテンツ・アイテムを表示するためのコンテンツ・プレゼンタ・タスク・フローが含まれている場合、次のように、コンテンツが表示されるよう、そのタスク・フローのプロパティを手動で変更する必要があります。

- datasource: connection_name#dDocName:content_ID

- datasourceType: dsTypeSingleNode

- taskFlowInstId: 一意の識別子

コンテンツ・プレゼンタ・タスク・フローの詳細は、表30-4「コンテンツ・プレゼンタ・タスク・フローのパラメータ」を参照してください。

- ページ・テンプレートを実行時に管理できるようにする場合、イメージ、JavaScript、スタイル・シート、HTMLファイルなど、ページ・テンプレートの依存オブジェクトを次のディレクトリの下に格納する必要があります。このディレクトリは、設計時に作成されるページ・テンプレートのデフォルトのコンテンツ・ディレクトリです。

Application_Root/Portal/public_html/oracle/webcenter/portalapp/shared

また、ベスト・プラクティスとして、依存オブジェクトをsharedディレクトリの下のリソース固有のサブディレクトリに格納することをお薦めします。たとえば、Template1というページ・テンプレートのイメージは、次の場所に格納できます。

/oracle/webcenter/portalapp/shared/pageTemplates/Template1

これによって、追加リソースをランタイムからインポートした場合に生じる可能性のある競合が回避されます。

リソースをポータル・リソースとして追加する場合、コンテンツ・ディレクトリが、該当するsharedディレクトリを必ず指すようにする必要があります。

ページ・テンプレート内の依存オブジェクトを参照するには、次の形式を使用します。

/oracle/webcenter/portalapp/shared/objectFileName

例:

<af:image source="/oracle/webcenter/portalapp/shared/pageTemplates/Template1/logo.gif" id="pt_12">

11.2.4 ページ・テンプレートの実行時切替えの有効化

ページの作成時に、そのページで使用する特定のページ・テンプレートを選択します。これによって、ページ・テンプレートへの静的参照が、ページのJSPXファイルに追加されます。例:

<af:pageTemplate
viewId="/oracle/webcenter/portalapp/pagetemplates/pageTemplate_globe.jspx"
value="#{bindings.pageTemplateBinding  }"
id="pt1">
<f:facet name="content"/>
</af:pageTemplate>

ページ・テンプレートのバインディングが、ページのページ定義ファイルに作成されます。例:

<executables>
<variableIterator id="variables"/>
<page path="oracle.webcenter.portalapp.pagetemplates.pageTemplate_globePageDef"
id="pageTemplateBinding" Refresh="ifNeeded"/>
</executables>

対象のページに別のページ・テンプレートを使用するには、これら両方の参照を変更する必要があります。

これらの参照を変更し、EL式を使用してページ・テンプレートの実行時切替えを有効にすることもできます。

注意:

ページ・テンプレート間の実行時の切替えは、ページ定義が関連付けられた状態でページ・テンプレートが作成されている場合にのみ可能です。

ページ・テンプレートの実行時切替えを有効にするには:

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"/>

7. アプリケーション・ナビゲータの「アプリケーション・リソース」ペインで、adf-config.xmlファイルを右クリックして、「開く」を選択します。

ヒント:

adf-config.xmlファイルを探すには、「ディスクリプタ」ノードを開き、さらに「ADF META-INF」ノードを開きます。

8. 「ソース」タブをクリックします。

9. 次のIDを使用して、ADFプリファレンスを見つけます。

oracle.webcenter.portalapp.pagetemplate.pageTemplate

10. ページに適用するページ・テンプレートにvalue属性を設定します。例:

<portal:preference
id="oracle.webcenter.portalapp.pagetemplate.pageTemplate"
desc="Default Page Template"
value="/oracle/webcenter/portalapp/pagetemplates/pageTemplate_globe.jspx"
resourceType="Template" display="true"/>

11.2.5 ページ・テンプレートを編集する方法

ページ・テンプレートの初期作成後に、そのページ・テンプレートに変更を加えることができます。加えるすべての変更が、そのページ・テンプレートを使用するすべてのページに自動的に公開されます。

ページ・テンプレートを編集するには:

1. 編集するページ・テンプレートを特定します。

2. ページ・テンプレートを右クリックし、「開く」を選択します。

3. ビジュアル・エディタで、ページ・テンプレートのレイアウトやコンテンツに変更を加えます。

4. 新規ファセット定義または属性を追加するには、「構造」ウィンドウでaf:pageTemplateDefタグを選択して、プロパティ・インスペクタを使用します。

5. ページ・テンプレート定義ファイルを保存します。
反復開発が有効な場合、ページ・テンプレートに加えた変更はすべて実行中アプリケーションですぐに確認できます。反復開発の詳細は、第1.5項「反復開発の準備」を参照してください。

11.2.6 ページ・テンプレートを削除する方法

ページ・テンプレートがポータル内で必要ではなくなった場合、それを削除できます。ページ・テンプレートを削除する際に、そのページ・テンプレートへの直接参照があるページを実行しようとすると、例外が発生します。

ページ・テンプレートを削除するには:

1. 削除するページ・テンプレートを特定します。

2. ページ・テンプレートを右クリックし、「削除」を選択します。

3. 「削除の確認」ダイアログによって、アプリケーション内でそのページ・テンプレートが使用されているかどうかが識別されます。詳細を表示するには、「使用方法の表示」をクリックします。
この情報を使用して、テンプレートを本当に削除するのかどうかを決断できます。

4. 続行してページ・テンプレートを削除する場合は、「はい」をクリックします。操作を取り消す場合は、「いいえ」をクリックします。

11.2.7 ページ・テンプレートの実行時管理を有効にする方法

WebCenter Portalアプリケーションのリソース・マネージャを使用すると、管理権限のあるユーザーは、ページ・テンプレートなどのポータル・リソースを実行時に作成および変更できるようになります。リソース・マネージャでページ・テンプレートを公開することによって、管理者はそれらのテンプレートを実行時に管理できるようになります。アプリケーションのデプロイ後にさらにページ・テンプレートを作成して公開する場合には、JDeveloperからランタイム・アプリケーションにそれらのページ・テンプレートをエクスポートできます。

注意:

実行時にページ・テンプレートを作成した場合に、設計時環境にインポートして戻さないときは、新規ページ・テンプレートがアプリケーションの再デプロイ時に失われることがあります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のリソース・カスタマイズの保存に関する項を参照してください。

リソース・マネージャでページ・テンプレートを公開するには、第16.2.1項「リソースをリソース・マネージャに追加する方法」を参照してください。

ページ・テンプレートの実行時機能の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページ・テンプレートの使用に関する項の章を参照してください。

11.2.8 デプロイしたページ・テンプレートのさらなる開発を有効にする方法

シード済ページ・テンプレートをリソース・マネージャで変更または削除することはできません。ただし、管理権限のあるユーザーは、シード済ページ・テンプレートのコピーを作成してそれを編集または削除することも、独自のページ・テンプレートを作成することもできます。

ユーザーがページ・テンプレートを実行時に作成または編集する場合は、さらなる拡張のためにJDeveloperにページ・テンプレートを戻す必要があることがあります。これを実行するには、デプロイ済アプリケーションからページ・テンプレートをダウンロードし、JDeveloperで編集して、アプリケーションにアップロードして戻します。設計時、このタイプのラウンドトリップ開発には、ダウンロードしたページ・テンプレートのインポート、JDeveloperでの編集、およびデプロイ済アプリケーションにアップロードして戻すためのエクスポートが含まれます。

また、アプリケーションのデプロイ後に新規ページ・テンプレートを作成した場合、JDeveloperからそのページ・テンプレートをエクスポートして、それをデプロイ済アプリケーションにアップロードできます。

この項では、JDeveloperでページ・テンプレートをインポートおよびエクスポートする方法について説明します。次のサブセクションが含まれます:

- 第11.2.8.1項「ページ・テンプレートのインポート」

- 第11.2.8.2項「ページ・テンプレートのエクスポート」

ラウンドトリップ開発の詳細は、第16.4項「リソースのラウンドトリップ開発の有効化」を参照してください。

11.2.8.1 ページ・テンプレートのインポート

リソース・マネージャからページ・テンプレートをダウンロードすると、EARファイルが作成されます。JDeveloperにEARファイルをインポートする際には、EARファイルのファイルは、フォルダApplication_Root/Portal/public_html/oracle/webcenter/siteresources/scopedMD/scope_GUIDに抽出されます。設計時の他のページ・テンプレートと同じように、そのページ・テンプレートを開いて編集できます。編集後に、更新済のページ・テンプレートをデプロイ済アプリケーションにエクスポートする必要があります。

リソースのインポートの詳細な手順は、第16.4.2項「ポータル・リソースをJDeveloperにインポートする方法」を参照してください。

11.2.8.2 ページ・テンプレートのエクスポート

次の理由でエクスポートの実行が必要になります。

- すでにデプロイしたアプリケーションで新規ページ・テンプレートを公開します。

- デプロイしたアプリケーションからインポートして変更したページ・テンプレートをコピーして戻します。

JDeveloperからページ・テンプレートをエクスポートすると、EARファイルが作成されます。管理者権限のあるユーザーは、この後、リソース・マネージャを使用してこのEARファイルをデプロイしたアプリケーションにアップロードできます。アップロード後は、そのページ・テンプレートを管理したり、アプリケーション・ページの作成に使用したりできます。

リソースのエクスポートの詳細な手順は、第16.4.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

11.2.9 WebCenter Portal: Spacesのページ・テンプレートを作成および管理する方法

WebCenter Portal: Spacesには、そのまま各自のスペースで使用できるシード済ページ・テンプレートが用意されています。これらのデフォルトのページ・テンプレートが要件に適さない場合には、WebCenter Portal: Spaces内で独自のページ・テンプレートを作成できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページ・テンプレートの使用に関する項の章を参照してください。

ただし、WebCenter Portal: Spacesでは、必要とするすべての機能を備えたページ・テンプレートを作成するためのコントロール機能がすべて提供されていない可能性があります。そのような場合は、JDeveloperで独自のページ・テンプレートを作成してから、それをWebCenter Portal: Spacesにアップロードできます。WebCenter Portal: Spacesから既存のページ・テンプレートをダウンロードして、それをJDeveloperで編集した後か、いずれかのサンプル・ページ・テンプレートを起点として使用した後に、WebCenter Portal: Spacesにアップロードして戻すこともできます。

WebCenter Portalには特別なJDeveloperワークスペース(DesignWebCenterSpaces.jws)が用意されており、ページ・テンプレートなどのリソースを開発してWebCenter Portal: Spacesにアップロードする際に利用できます。第55章「JDeveloperを使用したSpacesアプリケーションの拡張」には、サンプルのワークスペースの場所、およびWebCenterSpacesResourcesプロジェクトを使用してカスタムのページ・テンプレートやWebCenter Portal: Spacesのその他のタイプのリソースを作成する方法が記載されています。詳細は、第55章「JDeveloperを使用したSpacesアプリケーションの拡張」を参照してください。

WebCenter Portal: Spacesで使用するためにページ・テンプレートをJDeveloperで作成または編集する場合、次を考慮してください。

- ページ・テンプレートには、contentというファセット定義を含める必要があります。

- ページ・テンプレートには、class="WCPGTEMPLATE"と指定されたUIコンポーネントを少なくとも1つ含める必要があります。スキンを実行時に編集することによって、基本タブでテンプレートの背景をターゲットにすることができますが、それは現行スタイルによります。

11.3 ページ・スタイルの使用

ページ・スタイルは、JSPXページです。「ページの作成」ダイアログで、任意の数のカスタム・ページ・スタイルを作成して、それらをユーザーに公開できます。この項では、ページ・スタイルの作成およびページ・スタイルの実行時管理の有効化に関する情報を提供します。次の項が含まれます:

- 第11.3.1項「ページ・スタイルを作成する方法」

- 第11.3.2項「ページ・スタイルの実行時管理を有効にする方法」

- 第11.3.3項「デプロイしたページ・スタイルのさらなる開発を有効にする方法」

- 第11.3.4項「Spacesのページ・スタイルを作成および管理する方法」

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

ページ・スタイルを最初から作成することも、ADFページ・テンプレートを使用して作成することもでき、作成した後はそれを必要なレイアウト・コンポーネントで設計できます。ただし、カスタム・アプリケーションで使用するページ・スタイルの作成には前提条件がいくつかあります。

ポータル・リソースとして公開するページ・スタイルの要件

- スタイルをリソース・マネージャで必ず公開できるように、/oracle/webcenter/portalappディレクトリ内にページ・スタイルのJSPXファイルを作成します。ページ・スタイル用のサブディレクトリ(たとえば、pagestyles)を作成することも、そのまま使用できるpagesディレクトリにページ・スタイルを保存することもできます。
ページ・スタイルを実行時リソース・マネージャで公開できるのは、/oracle/webcenter/portalapp構造内にそのページ・スタイルが存在する場合のみです。

- ページ・スタイルがページ・テンプレートに基づいている場合は、ページ・スタイルのJSPXの設計時に、contentファセット、またはページ・テンプレートで定義されているその他のファセットを追加して、ページ・コンテンツが含まれるようにします。

- ページをカスタマイズ可能にするには、コンテンツ・ファセット内にPage Customizableコンポーネントを追加します。Page Customizableには、子であるPanel Customizableコンポーネントがデフォルトで含まれているため、ユーザーは実行時にコンテンツをページに追加できます。

- ページ・スタイルに使用するADFテンプレートを動的に選択できるようにするには、ページ・スタイルのJSPXで、pageTemplateにEL値を指定します。次の例で示しているように、ページ・テンプレートIDを返すマネージドBeanメソッドに、EL式を使用してvalue属性を設定します。

<af:pageTemplate value="#{bindings.pageTemplateBinding.templateModel}" id="T">

これは、使用するADFテンプレートが、現行のユーザーやスコープなどの条件に基づいて決定される場合に有用です。

- ページ・スタイルから作成した新規ページのルック・アンド・フィールが、配置先のポータルと必ず同じになるように設定できます。このためには、現在適用されているページ・テンプレートに基づいたADFテンプレートを使用するようにページ・スタイルを構成します。これを実現するには、次の例で示しているように、ページ・スタイルのページ定義ファイル内のページ・テンプレートのページ定義にEL参照を挿入する必要があります。

<page viewId="#{preferenceBean.defaultPageTemplateViewId}"
id="pageTemplateBinding" Refresh="ifNeeded"/>

- 次の例で示しているように、現在適用されているページ・テンプレートのIDを返すメソッドを使用してマネージド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;
}
}

第18.6.1項「実行時に作成したページ用のテンプレートを作成する方法」に、ページ・スタイル作成方法の詳細を示しています。

例11-7に、サンプル・ページ・スタイル/oracle/webcenter/portalapp/pages/pageStyles/TemplateFlowingTwoColumn.jspxのコードを示します。このコードにより、35パーセントと65パーセントの割合で2つの列を送り提供するように設計される基本ページが作成されます。例11-8に、関連するページ定義ファイル/oracle/webcenter/portalapp/pages/pageStyles/TemplateFlowingTwoColumnPageDef.jspxを示します。

関連項目:

第18.3.4.2項「カスタム・スタイル」には、カスタムのページ・スタイルおよびそれらのページ定義を格納できる場所、およびそれらのスタイルが実行時に「ページの作成」ダイアログに必ず表示されるようにする方法に関する情報が示されています。

例11-7 カスタムのページ・スタイルのソース・コード

<?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>

例11-8 カスタムのページ・スタイルのページ定義

<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>

11.3.2 ページ・スタイルの実行時管理を有効にする方法

リソース・マネージャでページ・スタイルを公開することによって、管理者はそれらのページ・スタイルを実行時に管理できるようになります。アプリケーションのデプロイ後であっても、アプリケーションを再デプロイする必要なく、追加のページ・スタイルを作成してエクスポートできます。実行時に、リソース・マネージャには、エクスポートしたページ・スタイルをアップロードするオプションが用意されています。

注意:

実行時にページ・スタイルを作成した場合に、設計時環境にインポートして戻さないときは、新規ページ・スタイルがアプリケーションの再デプロイ時に失われることがあります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のリソース・カスタマイズの保存に関する項を参照してください。

ページ・スタイルをリソース・マネージャで公開するには、アプリケーションのgeneric-site-resources.xmlファイルにそのページ・スタイルの有効なエントリが必要です。ページ・スタイルのJSPXファイルの、ポップアップ・メニューの次のオプションを使用して、リソース・マネージャでページ・スタイルを登録または登録解除します。

注意:

/oracle/webcenter/portalappディレクトリにページ・スタイルを作成した場合にのみ、ポップアップ・メニューにリソース・マネージャ固有のオプションが表示されます。

- ポータル・リソースの作成: generic-site-resources.xmlファイルにページ・スタイルのエントリを作成します。
エントリを作成する間に、表11-1で説明する属性を設定する必要があります。この表に示した属性は、ページ・スタイルに固有のものです。すべてのリソースに共通の汎用手順は、第16.2.1項「リソースをリソース・マネージャに追加する方法」を参照してください。

表11-1 ページ・スタイルのプロパティ

プロパティ

説明

表示名

ページ・スタイルの表示名。

リソース・タイプ

公開されるリソースのタイプ。これは、JSPXファイルの特定の内部検証に基づいて自動的に移入される読取り専用フィールドです。

アイコンURL

「ページの作成」ダイアログにページ・スタイル名とともに表示するイメージへのパス。

これはオプション設定です。

イメージ・ファイルへの絶対パスを指定します。たとえば、WebCenter Portal: Spacesからインポートしたページ・スタイルの場合、「アイコンURL」は次の形式になります。

APPLICATION_ROOT/oracle/webcenter/siteresources/scopedMD/shared/FILE_NAME

説明

ページ・スタイルの説明。

コンテンツ・ディレクトリ

イメージ、JavaScript、スタイル・シート、HTMLファイルなど、ページ・スタイルの依存オブジェクトが含まれるディレクトリ。

リソースに関連付けられているオブジェクトは、/oracle/webcenter/portalapp/sharedディレクトリに格納されている場合にのみレンダリングされます。

- ポータル・リソースの更新: ページ・スタイルのエントリの作成時に定義した属性を編集します。詳細は、第16.2.3項「ポータル・リソースのプロパティを更新する方法」を参照してください。

- ポータル・リソースの削除: generic-site-resources.xmlファイルから、選択したページ・スタイルのエントリを削除します。詳細は、第16.2.4項「リソースをリソース・マネージャから削除する方法」を参照してください。

11.3.3 デプロイしたページ・スタイルのさらなる開発を有効にする方法

シード済ページ・スタイルを実行時に変更または削除することはできません。ただし、管理者権限のあるユーザーは、シード済ページ・スタイルのコピーを作成してそのプロパティを編集したり、コピーを削除したりできます。

リソース・マネージャの「ソースの編集」オプションを使用すると、ユーザーは、コピーしたページ・スタイルまたはカスタムのページ・スタイルのコンテンツを実行時に変更できます。ただし、テキスト編集は実行時ソース・エディタよりJDeveloperで行う方が簡単なため、ユーザーは、ページ・スタイルをダウンロードして、それをJDeveloperで編集し、デプロイ済アプリケーションにアップロードして戻すことを選択できます。設計時、このタイプのラウンドトリップ開発には、ダウンロードしたページ・スタイルのインポート、JDeveloperでの編集、およびデプロイ済アプリケーションにアップロードして戻すためのエクスポートが含まれます。

この項では、JDeveloperでページ・スタイルをインポートおよびエクスポートする方法について説明します。

11.3.3.1 ページ・スタイルのインポート

リソース・マネージャからページ・スタイルをダウンロードすると、次のオブジェクトが含まれるEARファイルが作成されます。

- ページ・スタイルのJSPXファイル

- ページ定義ファイル

- generic-site-resources.xmlファイル

- ページ・スタイルによって参照されるコンテンツ・ディレクトリ。デフォルトでは、このディレクトリはoracle/webcenter/siteresources/scopedMD/sharedです。sharedディレクトリにコンテンツが含まれない場合、EARファイルにこのフォルダが含まれることはありません。

generic-site-resources.xmlファイルには、インポートされるリソースのタイプの特定に役立つメタデータが含まれます。ページ・スタイルをランタイム・アプリケーションにエクスポートして戻すときにも、このメタデータが使用されます。

JDeveloperにEARファイルをインポートする際には、EARのファイルは、フォルダApplication_Root/Portal/public_html/oracle/webcenter/siteresources/scopedMD/<scope_GUID>に抽出されます。設計時の他のページと同じように、ページ・スタイルを開いて編集できます。編集後に、更新済のページ・スタイルをデプロイ済アプリケーションにエクスポートする必要があります。

注意:

ページ・スタイルをWebCenter Portal: Spacesからインポートしたが、それをFrameworkアプリケーションで使用する場合は、ページ定義ファイルからWebCenter Portal: Spaces固有の権限マッピングを削除する必要があります。つまり、スタイルのページ定義から<permission>要素を削除します。権限マッピングを保持しておくと、エラーが発生する可能性があります。

リソースのインポートの詳細な手順は、第16.4.2項「ポータル・リソースをJDeveloperにインポートする方法」を参照してください。

11.3.3.2 ページ・スタイルのエクスポート

次の理由でエクスポートの実行が必要になります。

- すでにデプロイしたアプリケーションで新規ページ・スタイルを公開します。

- デプロイしたアプリケーションからインポートして変更したページ・スタイルをコピーして戻します。

ページ・スタイルをJDeveloperからエクスポートすると、ページ・スタイルのJSPX、ページ・スタイルのページ定義ファイル、generic-site-resources.xmlファイルおよびページ・スタイルに関連付けられているイメージが含まれるsharedフォルダが含まれるEARファイルが作成されます。管理者権限のあるユーザーは、この後、リソース・マネージャを使用してこのEARファイルをデプロイしたアプリケーションにアップロードできます。アップロード後は、そのページ・スタイルを管理したり、アプリケーション・ページの作成に使用したりできます。

リソースをインポートする手順の詳細は、第16.4.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

11.3.4 Spacesのページ・スタイルを作成および管理する方法

Spacesには、そのまま使用できるシード済ページ・スタイルがいくつか用意されています。これらのデフォルトのスタイルが要件に適さない場合には、Spaces内で独自のページ・スタイルを作成できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページ・スタイルの使用に関する項の章を参照してください。

ただし、Spacesでは、必要とするすべての機能を備えたページ・スタイルを作成するためのコントロール機能がすべて提供されていない可能性があります。そのような場合は、JDeveloperで独自のページ・スタイルを作成してから、それをSpacesにアップロードできます。Spacesから既存のページ・スタイルをダウンロードして、それをJDeveloperで編集した後か、いずれかのサンプル・ページ・スタイルを起点として使用した後に、Spacesにアップロードして戻すこともできます。JDeveloperでは、その他のJSPXページとまったく同じようにページ・スタイルを作成して、Spacesにアップロードできます。

Oracle WebCenter Portalには特別なJDeveloperワークスペース(DesignWebCenterSpaces.jws)が用意されており、ページ・スタイルなどのリソースを開発してSpacesにアップロードする際に利用できます。第55章「JDeveloperを使用したSpacesアプリケーションの拡張」には、サンプルのワークスペースの場所、およびWebCenterSpacesResourcesプロジェクトを使用してカスタムのページ・スタイルやSpacesのその他のタイプのリソースを作成する方法が記載されています。

ページ・スタイルの作成および編集の主要タスクは、FrameworkアプリケーションとSpacesアプリケーションで同じですが、Spacesアプリケーションの場合に追加で考慮が必要な事項がいくつかあります。この項では、Spacesで使用するページ・スタイルに関する特別な考慮事項を示します。

Spacesで使用するページ・スタイルの要件

次の例で示しているように、CustomPagePermissionクラスを使用して、ページ・スタイルに権限を明示的にマップします。

<permission permissionClass="oracle.webcenter.page.model.security.CustomPagePermission" target="ps_targetusage">
<privilege-map operation="administer" privilege="manage"/>
<privilege-map operation="create" privilege="create"/>
<privilege-map operation="delete" privilege="delete"/>
<privilege-map operation="edit" privilege="update"/>
<privilege-map operation="personalize" privilege="personalize"/>
<privilege-map operation="view" privilege="view"/>
</permission>

ページ・スタイルの一般的な前提条件は、「ポータル・リソースとして公開するページ・スタイルの要件」を参照してください。ページ・スタイルを作成する手順は、第11.3.1項「ページ・スタイルを作成する方法」を参照してください。

11.4 マッシュアップ・スタイルの使用

マッシュアップ・スタイルは、新規タスク・フローを実行時に作成するためのテンプレートとして使用できるADFタスク・フローです。ただし、マッシュアップ・スタイルには1つのビュー・フラグメントしか指定できません。また、マッシュアップ・スタイルが、EL値などを使用してコードを参照する場合、そのコードはデプロイ済アプリケーションに含まれる必要があります。

マッシュアップ・スタイルの作成を選択する目的として、次の場合があります。

- タスク・フローに特定の整合性のあるレイアウトを提供します。

- マッシュアップ・スタイル(スペース・ピッカー・ドロップダウンを使用するマッシュアップ・スタイルなど)から作成されたタスク・フローで順に使用可能なパラメータ・フォームまたはUIピッカーをシードします。このスタイルに基づくタスク・フローが「アクティビティ・ストリーム」タスク・フローに移入される場合、ピッカー・ドロップダウンを、「アクティビティ・ストリーム」タスク・フローの入力パラメータに関連付けることができます。「アクティビティ・ストリーム」タスク・フローは、選択したスペースに固有のアクティビティを表示します。

- データに個別にバインドできる事前定義済UIを提供します。たとえば、マッシュアップ・スタイルでフロー・データ・レイアウトを作成し、そこからタスク・フローを作成し、データ・コントロールをドロップしてから、フロー・データ・レイアウトをデータ・コントロールにバインドできます。

リソース・マネージャには、管理権限のあるユーザーがタスク・フローを作成および管理できる「タスク・フロー」ページが用意されています。ユーザーが「タスク・フロー」ページの「作成」をクリックすると、図11-13に示しているように、「新規タスク・フローの作成」ダイアログに、ユーザーが使用できるシード済マッシュアップ・スタイルが表示されます。

図11-13 シード済マッシュアップ・スタイル

注意:

ADFタスク・フローの管理

実行時にマッシュアップ・スタイルを管理するしくみと同様に、リソース・マネージャでもタスク・フローを作成および管理できます。リソース・マネージャの「タスク・フロー」ページを使用すると、ユーザーはタスク・フローを作成、編集、削除、インポートおよびエクスポートできます。

JDeveloperで作成したカスタム・タスク・フローをポータル・リソースとしてエクスポートすることはできませんが、実行時に作成したタスク・フローをインポートして、それを変更し、ランタイム・アプリケーションにエクスポートして戻すことはできます。タスク・フローのインポート、変更およびエクスポートの手順は、マッシュアップ・スタイルのものと同じです。このため、この項で示したエクスポート、インポート、および編集の各タスクは、タスク・フローおよびマッシュアップ・スタイルに適用できます。

カスタム・タスク・フローの追加とエクスポートの詳細は、第12.3項「ポータルへのカスタム・タスク・フローの追加」を参照してください。

この項では、マッシュアップ・スタイルを作成して、それが実行時に公開されるように構成する方法を説明します。この項の内容は、次のとおりです。

- 第11.4.1項「マッシュアップ・スタイルを作成する方法」

- 第11.4.2項「マッシュアップ・スタイルの実行時管理を有効にする方法」

- 第11.4.3項「デプロイ済アプリケーションでのマッシュアップ・スタイルのさらなる開発を有効にする方法」

- 第11.4.4項「Spacesのマッシュアップ・スタイルを作成および管理する方法」

11.4.1 マッシュアップ・スタイルを作成する方法

マッシュアップ・スタイルの作成は、タスク・フローの作成と同じですが、マッシュアップ・スタイルは、実行時にタスク・フローを作成するためのテンプレートとして使用することのみを目的として作成します。マッシュアップ・スタイルをリソース・マネージャで公開した場合にのみ、それらを実行時に使用できます。

ポータル・リソースとして公開するマッシュアップ・スタイルの要件

リソース・マネージャでマッシュアップ・スタイルを公開するには、マッシュアップ・スタイルをJDeveloperで作成する際に次の要件を考慮に入れる必要があります。

- /oracle/webcenter/portalappディレクトリ内にタスク・フロー定義XMLファイルを作成します。マッシュアップ・スタイル用のサブディレクトリ(たとえば、mashupstyles)を作成することも、portalappディレクトリにマッシュアップ・スタイルを直接保存することもできます。

- マッシュアップ・スタイルとして使用するタスク・フローにはビュー・フラグメントを1つのみ作成し、このJSFFビュー・フラグメントにページ定義を作成します。

- コンポーザ・タグ・ライブラリからビュー・フラグメントにPanel Customizableコンポーネントを追加します。これによって、このマッシュアップ・スタイルに基づくタスク・フローに、実行時に値を移入できるようになります。

例11-9に、バグ詳細データベースのレコードをアクティビティ・ストリーム形式でリストできるサンプル・マッシュアップ・スタイルのコードを示します。このスタイルは、アクセスするデータ・ソースの知識と、データ・ソースで使用可能な列に基づいて作成されます。この例の説明は、次のとおりです。

- dataPresenter.dummyData.collectionModelは、マッシュアップ・スタイルを実行時に使用する場合に、該当するデータ・コントロール参照に置換する必要があるNULLのデータ・ソースです。

- #{row.COLUMN}エントリは、マッシュアップ・スタイルの使用時にデータ・コントロールからデータ列を参照するプレースホルダーです。

- #{empty row.COLUMN ?'#{row.COLUMN}' : row.COLUMN}は、dataPresenter.dummyData.collectionModelが置換され、データが適切にバインドされるまで、このマッシュアップ・スタイルを使用して作成されるタスク・フローに#{row.COLUMN}を表示するために使用します。このような構成を使用することによって、このマッシュアップ・スタイルから作成されたタスク・フローから、ユーザーが使用可能なデータ・スロットに関するヒントを確実に受け取れるようになります。

例11-9 サンプル・マッシュアップ・スタイル

<?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 id="pgl1">
<cust:panelCustomizable id="pc1">
<table border="0" width="100%">
<af:iterator id="i1"
value="#{dataPresenter.dummyData.collectionModel}"
var="row">
<tr class="PortletText1">
<td width="16px">
<af:image id="img1"
source="http://abc.mycompany.com:80/webcenter/content/conn/UCM/Public/images/wiki/#{row.IMAGE}"/>
</td>
<td>
<af:outputText id="otCol1"
value="#{empty row.PLAYER1 ? '#{row.PLAYER1}' : row.PLAYER1}"
inlineStyle="color:#333333; font-size:12px; font-weight:bold;"/>
<af:spacer id="spacer1" width="5px"/>
<af:outputText id="otCol2"
value="#{empty row.MESSAGE ? '#{row.MESSAGE}' : row.MESSAGE}"
inlineStyle="color:#333333; font-size:12px;"/>
<af:spacer id="spacer2" width="5px"/>
<af:goLink id="gl1"
destination="https://bug.mycompany.com/pls/bug/webbug_edit.edit_info_top?rptno=#{empty row.RPTNO ? '#{row.RPTNO}' : row.RPTNO}"
targetFrame="_blank"
text="#{empty row.RPTNO ? '#{row.RPTNO}' : row.RPTNO"/>
</td>
</tr>
<tr>
<td></td>
<td>
<af:outputText id="otCol3"
value=""#{empty row.BUG_SUBJECT ? '#{row.BUG_SUBJECT}' : row.BUG_SUBJECT}"
inlineStyle="color:#666666; font-size:12px;"/>
</td>
</tr>
<tr>
<td></td>
<td>
<af:outputText id="otCol4"
value="#{empty row.TIMEOFDAY ? '#{row.TIMEOFDAY}' : row.TIMEOFDAY}"
inlineStyle="color:#666666; font-size:10px;"/>
</td>
</tr>
</af:iterator>
</table>
</cust:panelCustomizable>
</af:panelGroupLayout>
</jsp:root>

ADFタスク・フローの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFタスク・フローの作成に関する項を参照してください。

11.4.2 マッシュアップ・スタイルの実行時管理を有効にする方法

リソース・マネージャでマッシュアップ・スタイルを公開することによって、管理者はそれらのスタイルを管理したり、スタイルに基づいてタスク・フローを作成したりできるようになります。選択したマッシュアップ・スタイルをJDeveloperからエクスポートして、管理者が実行時にそれらのスタイルを変更したり削除したりできるようにすることも可能です。

マッシュアップ・スタイルの実行時管理は、ページ・スタイルの管理と同様です。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページ・スタイル・リソースの使用に関する項を参照してください。

注意:

実行時にマッシュアップ・スタイルを作成した場合に、設計時環境にインポートして戻さないときは、新規マッシュアップ・スタイルがアプリケーションの再デプロイ時に失われることがあります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のリソース・カスタマイズの保存に関する項を参照してください。

マッシュアップ・スタイルをリソース・マネージャで公開するには、アプリケーションのgeneric-site-resources.xmlファイルにそのマッシュアップ・スタイルの有効なエントリが必要です。タスク・フロー定義のXMLファイルの、ポップアップ・メニューの次のオプションを使用して、リソース・マネージャでマッシュアップ・スタイルを登録または登録解除します。

注意:

/oracle/webcenter/portalappディレクトリにマッシュアップ・スタイルを作成した場合にのみ、ポップアップ・メニューにリソース・マネージャ固有のオプションが表示されます。

- ポータル・リソースの作成: generic-site-resources.xmlファイルにマッシュアップ・スタイルのエントリを作成します。
エントリを作成する間に、表11-2で説明する属性を設定する必要があります。この表に示した属性は、マッシュアップ・スタイルに固有のものです。すべてのリソースに共通の汎用手順は、第16.2.1項「リソースをリソース・マネージャに追加する方法」を参照してください。

表11-2 マッシュアップ・スタイルのプロパティ

プロパティ

説明

表示名

スタイルの表示名。

リソース・タイプ

公開されるリソースのタイプ。ここではMashup Styleを選択する必要があります。

アイコンURL

「新規タスク・フローの作成」ダイアログにマッシュアップ・スタイル名とともに表示するイメージへのパス。

これはオプション設定です。このイメージがクラスパスに含まれており、実行時にアクセスできる必要があります。

説明

マッシュアップ・スタイルの説明。

- ポータル・リソースの更新: マッシュアップ・スタイルのエントリの作成時に定義した属性を編集します。詳細は、第16.2.3項「ポータル・リソースのプロパティを更新する方法」を参照してください。

- ポータル・リソースの削除: generic-site-resources.xmlファイルから、マッシュアップ・スタイルのエントリを削除します。詳細は、第16.2.4項「リソースをリソース・マネージャから削除する方法」を参照してください。

11.4.3 デプロイ済アプリケーションでのマッシュアップ・スタイルのさらなる開発を有効にする方法

シード済マッシュアップ・スタイルをリソース・マネージャで変更または削除することはできません。ただし、管理者権限のあるユーザーは、シード済マッシュアップ・スタイルのコピーを作成してそのプロパティを編集したり、コピーを削除したりできます。

リソース・マネージャの「ソースの編集」オプションを使用すると、ユーザーは、コピーしたマッシュアップ・スタイルまたはカスタムのマッシュアップ・スタイルのコンテンツを実行時に変更できます。ただし、テキスト編集は実行時ソース・エディタよりJDeveloperで行う方が簡単なため、ユーザーは、マッシュアップ・スタイルをダウンロードして、それをJDeveloperで編集し、デプロイ済アプリケーションにアップロードして戻すことを選択できます。設計時に、このタイプのラウンドトリップ開発には、ダウンロードしたマッシュアップ・スタイルのインポート、JDeveloperでの編集、およびデプロイ済アプリケーションにアップロードして戻すためのエクスポートが含まれます。

この項では、JDeveloperでマッシュアップ・スタイルをエクスポートおよびインポートする方法について説明します。

11.4.3.1 マッシュアップ・スタイルのインポート

リソース・マネージャからマッシュアップ・スタイルをダウンロードすると、次のオブジェクトが含まれるEARファイルが作成されます。

- タスク・フロー定義ファイル

- ビュー・フラグメントJSFFファイル

- ビュー・フラグメント・ページ定義ファイル

- generic-site-resources.xmlファイル

- マッシュアップ・スタイルによって参照されるコンテンツ・ディレクトリ。デフォルトでは、このディレクトリはoracle/webcenter/siteresources/scopedMD/sharedです。sharedディレクトリにコンテンツが含まれない場合、EARファイルにこのフォルダが含まれることはありません

generic-site-resources.xmlファイルには、インポートされるリソースのタイプの特定に役立つメタデータが含まれます。マッシュアップ・スタイルをランタイム・アプリケーションにエクスポートして戻すときにも、このメタデータが使用されます。

JDeveloperにEARファイルをインポートする際には、EARのファイルは、フォルダApplication_Root/Portal/public_html/oracle/webcenter/siteresources/scopedMD/<scope_GUID>に抽出されます。設計時の他のタスク・フローと同じように、マッシュアップ・スタイルを開いて編集できます。編集後に、更新済のマッシュアップ・スタイルをランタイム・アプリケーションにエクスポートする必要があります。

注意:

JDeveloperで実行時マッシュアップ・スタイルを更新しているときに、アイコンURLがアプリケーションのクラスパスの場所を指していると、APPLICATION_ROOT/oracle/webcenter/siteresources/scopedMDディレクトリにアイコンを配置するよう求めるエラー・メッセージが表示される場合があります。マッシュアップ・スタイルの更新を続行するには、アイコンURLにNULL値を指定し、マッシュアップ・スタイルのアップロード後の実行時に適切な値に置換します。

リソースのインポートの詳細な手順は、第16.4.2項「ポータル・リソースをJDeveloperにインポートする方法」を参照してください。

11.4.3.2 マッシュアップ・スタイルのエクスポート

次の理由でエクスポートの実行が必要になります。

- すでにデプロイしたアプリケーションで新規マッシュアップ・スタイルを公開します。

- デプロイしたアプリケーションからインポートして変更したマッシュアップ・スタイルをコピーして戻します。

マッシュアップ・スタイルをJDeveloperからエクスポートすると、タスク・フロー定義ファイル、ビュー・フラグメントJSFF、ビュー・フラグメント・ページ定義ファイル、generic-site-resources.xmlファイルおよびマッシュアップ・スタイルに使用するイメージが含まれるsharedフォルダが含まれるEARファイルが作成されます。管理者権限のあるユーザーは、リソース・マネージャを使用して、このEARファイルをデプロイ済アプリケーションにアップロードできます。アップロード後は、そのマッシュアップ・スタイルを管理したり、タスク・フローの作成に使用したりできます。

手順の詳細は、第16.4.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

11.4.4 Spacesのマッシュアップ・スタイルを作成および管理する方法

Spacesには、そのまま使用できるシード済マッシュアップ・スタイルがいくつか用意されています。これらのデフォルトのスタイルが要件に適さない場合には、Spaces内で独自のマッシュアップ・スタイルを作成できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のマッシュアップ・スタイルの使用に関する項の章を参照してください。

ただし、Spacesでは、必要とするすべての機能を備えたマッシュアップ・スタイルを作成するためのコントロール機能がすべて提供されていない可能性があります。そのような場合は、JDeveloperで独自のマッシュアップ・スタイルを作成してから、それをSpacesにアップロードできます。Spacesから既存のマッシュアップ・スタイルをダウンロードして、それをJDeveloperで編集した後か、いずれかのサンプル・マッシュアップ・スタイルを起点として使用した後に、Spacesにアップロードして戻すこともできます。

Oracle WebCenter Portalには特別なJDeveloperワークスペース(DesignWebCenterSpaces.jws)が用意されており、マッシュアップ・スタイルなどのリソースを開発してSpacesにアップロードする際に利用できます。第55章「JDeveloperを使用したSpacesアプリケーションの拡張」には、サンプルのワークスペースの場所、およびWebCenterSpacesResourcesプロジェクトを使用してカスタムのマッシュアップ・スタイルやSpacesのその他のタイプのリソースを作成する方法が記載されています。

マッシュアップ・スタイルの作成および編集の主要タスクは、FrameworkアプリケーションとSpacesアプリケーションで同じです。マッシュアップ・スタイルを作成する手順は、第11.4.1項「マッシュアップ・スタイルを作成する方法」を参照してください。

マッシュアップ・スタイルの一般的な前提条件は、「ポータル・リソースとして公開するマッシュアップ・スタイルの要件」を参照してください。

12 ポータルへのリソースの追加

WebCenter Portal: Frameworkアプリケーションのコンテンツを作成する場合、次のような様々なリソースからコンテンツを取り込むことができます。

- ページ

- ポートレットおよびページレット

- WebCenter Portalサービス・タスク・フローおよびカスタム・タスク・フロー

- UCMからのコンテンツ

- 外部アプリケーション

Frameworkアプリケーションへのコンテンツの追加は、その他のあらゆるWebアプリケーションへのコンテンツの追加と同じです。

この章には次の項が含まれます:

- 第12.1項「ポータルへのページの追加」

- 第12.2項「ポータルへのサービス・タスク・フローの追加」

- 第12.3項「ポータルへのカスタム・タスク・フローの追加」

- 第12.4項「Content Serverからのコンテンツのポータルへの追加」

- 第12.5項「ポータルへのポートレットの追加」

- 第12.6項「ポータルへのページレットの追加」

- 第12.7項「ポータルへの外部アプリケーションの追加」

- 第12.8項「ポータルへのデータ・コントロールの追加」

12.1 ポータルへのページの追加

ポータルは、ポータルの構造を指定し、コンテンツを公開する様々なページで構成されます。WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してポータルを作成すると、ホーム・ページやその他いくつかのページが自動的に作成されます。ポータルの残りの部分には、独自のページを作成できます。

詳細は、第5.3項「ポータルへのページの追加」を参照してください。

ページの作成後、それらのページをページ階層に編成して、ページの構造を指定できます。ページ階層によって、これらのページのセキュリティも指定されます。

詳細は、第68.6項「ページ階層セキュリティ・エディタの使用」を参照してください。

ユーザーが実行時にページを編集できるようにするには、ページにコンポーザ・コンポーネントを追加します。

詳細は、第19章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

12.2 ポータルへのサービス・タスク・フローの追加

WebCenter Portalサービスは、ソーシャル・コンピューティング・サービス、個人の生産性サービス、オンラインでの認識およびコミュニケーション、コンテンツ統合、Web分析などのエンタープライズ2.0機能によってポータルおよびWebサイトを充実したものにします。WebCenter Portalサービスは、タスク・フローを通してその機能を公開します。WebCenter Portalサービスおよびタスク・フローの詳細は、第2.4項「Oracle WebCenter Portal: Servicesの概要」を参照してください。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してポータルを作成すると、適切なすべてのWebCenter Portalサービス接続ウィザードおよびタグ・ライブラリが、新規ギャラリおよびコンポーネント・パレットにすぐに表示され、使用できるようになります。WebCenter Portalサービス・タスク・フローまたはコンポーネントを利用する場合、必要なライブラリが自動的にプロジェクトに追加されます。アプリケーションは、利用するサービスに応じた特定の前提条件を満たす必要があります。たとえば、サービスでユーザーのアイデンティティを認識する必要がある場合、アプリケーションでユーザー認証に一定レベルのセキュリティを提供する必要があります。詳細は、第7章「WebCenter Portal Services用アプリケーションの準備」を参照してください。

各WebCenter Portalサービスとそのタスク・フローの詳細は、表12-1を参照してください。

表12-1 WebCenter Portalサービス - 詳細

WebCenter Portalサービス

詳細

アクティビティ・グラフ

第45章「アクティビティ・グラフ・サービスの統合」

分析

第46章「分析サービスの統合」

お知らせ

第32章「お知らせサービスの統合」

ブログ

第31章「Wikiとブログの統合」

ディスカッション

第33章「ディスカッション・サービスの統合」

ドキュメント

第29章「ドキュメント・サービスの統合」

イベント

第51章「イベント・サービスの統合」

インスタント・メッセージおよびプレゼンス(IMP)

第34章「インスタント・メッセージおよびプレゼンス・サービスの統合」

リンク

第42章「リンク・サービスの統合」

リスト

第47章「リスト・サービスの統合」

メール

第35章「メール・サービスの統合」

通知

第48章「通知の統合」

ピープル・コネクション

第VI部「ピープル・コネクション・サービスの使用」

投票

第36章「投票サービスの統合」

最近のアクティビティ

第49章「最近のアクティビティ・サービスの統合」

RSS

第52章「RSSサービスの統合」

検索

第44章「検索サービスの統合」

タグ

第43章「タグ・サービスの統合」

Wiki

第31章「Wikiとブログの統合」

ワークリスト

第50章「ワークリスト・サービスの統合」

12.3 ポータルへのカスタム・タスク・フローの追加

タスク・フローは、ページと同様に、ポートレット、コンテンツ、その他のタスク・フローなどのコンポーネントを追加できるコンテナです。タスク・フローをページやその他のタスク・フローに追加できます。JDeveloperで作成したタスク・フローをリソース・カタログに含めて、ユーザーがそれらのタスク・フローを実行時にページやその他のタスク・フローに追加できるようにすることが可能です。

カスタム・タスク・フローはリソース・カタログにドラッグ・アンド・ドロップできるため、ユーザーは実行時にページやタスク・フローに追加する際に使用できます。詳細は、第15.2.3.7項「リソースのカタログへのドラッグ・アンド・ドロップ」を参照してください。アプリケーションをデプロイすると、タスク・フローもターゲット・インスタンスにデプロイされます。

様々なタイプのADFタスク・フロー作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFタスク・フローの作成に関する項を参照してください。

JDeveloperで作成したタスク・フローのデプロイ済アプリケーションへの公開

カスタム・タスク・フローをJDeveloperで作成し、それをすでにデプロイされているアプリケーションに公開する場合、そのタスク・フローが含まれるプロジェクトをADF共有ライブラリとしてランタイム・アプリケーションにデプロイする必要があります。タスク・フローが含まれるライブラリにアプリケーションからアクセス可能になると、実行時リソース・レジストリにそのライブラリが表示され、そこからカスタムのリソース・カタログにライブラリを追加できます。

注意:

タスク・フローを表示または編集する権限は、タスク・フローの作成時にデフォルトではプロビジョニングされません。タスク・フローが実行時に必ず表示されるように、共有ライブラリをデプロイする前に、そのタスク・フローに対して少なくとも表示権限を付与する必要があります。詳細は、第23.6.1項「タスク・フローに対する権限の付与」を参照してください。

Frameworkアプリケーションにアプリケーションをデプロイする手順は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWebLogic管理対象サーバーへのアプリケーションのデプロイに関する項を参照してください。ただし、アプリケーション・インストール・アシスタントの実行時に、「ターゲット指定スタイルの選択」ページで「このデプロイメントをライブラリとしてインストールする」を選択してください。

WebCenter Portal: Spacesインスタンスへのアプリケーションのデプロイ手順は、第55.2.3項「Spaces共有ライブラリ・リストの再ビルド」を参照してください。

12.4 Content Serverからのコンテンツのポータルへの追加

Content Serverのコンテンツ・リポジトリ内のコンテンツにアクセスできるようにするには、Content Serverへの接続を作成する必要があります。詳細は、第26.2.1項「Oracle Content Serverアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」を参照してください。

Content Serverへの接続が確立されると、ユーザーフレンドリなインタフェースを提供するタスク・フローが含まれるドキュメント・サービスを使用して、実行時にドキュメントを管理、表示および検索できます。詳細は、第29章「ドキュメント・サービスの統合」を参照してください。

次に、コンテンツ・タスク・フローまたはドキュメント・コンポーネントのいずれかをポータルに追加して、Content Serverのコンテンツを公開します。コンテンツ・タスク・フローには、コンテンツ・プレゼンタおよびドキュメント・サービス・タスク・フローが含まれます。

- コンテンツ・プレゼンタ

- ドキュメント・エクスプローラ

- ドキュメント・リスト・ビューア

- ドキュメント・マネージャ

- ドキュメント・ナビゲータ

- フォルダ・ビューア

- 最近のドキュメント

- ドキュメント・ビューア

- ドキュメント・ミニ・プロパティ

- ドキュメント・プロパティ

- リッチ・テキスト・エディタ

- ドキュメント・アップロード

- ドキュメント・バージョン履歴

次のようなドキュメント・コンポーネントがあります。

- ドキュメント・リンク

- ドキュメント・インライン・フレーム

- ドキュメント・イメージ

コンテンツ・プレゼンタ・タスク・フローの詳細は、第30.1項「コンテンツ・プレゼンタ・タスク・フローの理解」を参照してください。ドキュメント・サービス・タスク・フローの詳細は、第30.2項「ドキュメント・サービス・タスク・フローの理解」を参照してください。ドキュメント・コンポーネントの詳細は、第30.3項「ドキュメント・コンポーネントの理解」を参照してください。

コンテンツ・プレゼンタ・タスク・フローを使用する場合は、独自のコンテンツ・プレゼンタ表示テンプレートを作成することもできます。コンテンツ・プレゼンタ表示テンプレートでは、コンテンツ・リポジトリのアイテムをページでレンダリングする方法が定義されます。詳細は、第28章「コンテンツ・プレゼンタ表示テンプレートの作成」を参照してください。

12.5 ポータルへのポートレットの追加

ポートレットは再利用可能なWebコンポーネントで、多数の異なるソースからコンテンツを描画できます。ポートレットは、複数のソースからのデータを意味のある関連した方法で提示する手段を提供します。ポートレットの詳細は、第57章「ポートレットの概要」を参照してください。

ポートレットをポータルに追加するには、ポートレットのプロデューサをFrameworkアプリケーションに登録しておく必要があります。詳細は、第62章「ポートレットの消費」を参照してください。

ポートレット・プロデューサを登録すれば、ポータルに含める任意のポートレットを、該当するページにドラッグ・アンド・ドロップするだけです。詳細は、第62.6項「ページへのポートレットの追加」を参照してください。

ポートレットの作成方法の詳細は、次の章を参照してください。

- 第58項「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」

- 第59項「 JSR 286を使用した標準ベースのJavaポートレットの作成」

- 第60項「Oracle PDK-Javaを使用したJavaポートレットの構築」

12.6 ポータルへのページレットの追加

ページレットは、ポートレットに似ていますが、ポートレットがポータル専用に設計されていることに対して、ページレットは、ポータルやその他のWebアプリケーションを含め、あらゆるWebページで実行できます。ページレットを使用すれば、他のWeb環境でプラットフォーム固有のポートレットを公開できます。

ポータルへのページレットへの追加の詳細は、第65.2項「Webアプリケーションでのページレットの使用」を参照してください。

12.7 ポータルへの外部アプリケーションの追加

ポータルに追加するリソースで、独自の認証プロセスを定義するアプリケーションへのアクセスが必要な場合、外部アプリケーションを追加して、ユーザーがシングル・サインオンを利用できるようにすることが可能です。

たとえば、ポータルに、個別ログインが必要なアプリケーションを指すポートレットが含まれている場合があります。あるいは、ポータルにメール・サービスが含まれている場合、ユーザーが毎回個別にログインする必要がないように、メール・サーバー・ユーザーをポータル・ユーザーにマップする外部アプリケーションを指定する必要があります。

ポータル・ユーザーが外部アプリケーションに初めてアクセスすると、そのユーザーは、アプリケーションのユーザー名とパスワードの入力を求められます。これらの資格証明は、ポータル・ユーザーにマップされ、資格証明ストアに安全に格納されます。それ以降は、認証時に資格証明ストアによってこれらの資格証明が外部アプリケーションに提供されます。外部アプリケーションの資格証明が変更されないかぎり、マップされた情報が資格証明ストアから読み込まれるため、ユーザーによる資格証明の入力は1回のみです。

詳細は、第68.13項「外部アプリケーションの使用」を参照してください。

12.8 ポータルへのデータ・コントロールの追加

データ・コントロールは、様々なデータ・ソースから情報を取得して、Frameworkアプリケーション内にユーザー・インタフェース(UI)コンポーネントを作成する際に使用されます。データ・コントロールでは、簡単に使用できるメソッドが提供され、これをJSFページにドラッグ・アンド・ドロップして、URL、ファイルおよびフォルダなどのADFコンポーネントとしてコンテンツを公開できます。データ・ソースからJSFページにコンテンツを追加するには、データ・ソースへの接続を作成してから、その接続を使用して、リポジトリに基づいたデータ・コントロールを作成する必要があります。

カスタムのデータ・コントロールを作成して、様々なデータ・ソースに接続し、それらのデータ・ソースをアプリケーション・ページやタスク・フローに追加できます。データ・コントロールの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

WebCenter Portalサービスによっては、サービスのカスタマイズされた視覚化を作成するためのデータ・コントロールを提供するものがあります。アプリケーション内でのこれらのデータ・コントロール利用の詳細は、第7.1.3項「WebCenter Portalのデータ・コントロールの使用」を参照してください。

すでにデプロイされているアプリケーションで利用するためのデータ・コントロールの公開

FrameworkアプリケーションまたはWebCenter Portal: Spacesの実行時リソース・レジストリには、デフォルトでDesign Time Data Controlsフォルダが含まれています。このフォルダによって、シード済WebCenter Portalサービス・データ・コントロール、およびアプリケーションのデプロイ前にそのアプリケーションに追加されていたその他のデータ・コントロールが公開されます。すでにデプロイされているFrameworkアプリケーションまたはWebCenter Portal: Spacesで新規データ・コントロールを公開するには、データ・コントロールが含まれるプロジェクトをランタイム・アプリケーションにADF共有ライブラリとしてデプロイする必要があります。データ・コントロールが含まれるライブラリにアプリケーションからアクセス可能になると、実行時リソース・レジストリにそのライブラリが表示され、そこからカスタムのリソース・カタログにライブラリを追加できます。

Frameworkアプリケーションにアプリケーションをデプロイする手順は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWLS管理コンソールを使用したアプリケーションのデプロイに関する項を参照してください。ただし、アプリケーション・インストール・アシスタントの実行時に、「ターゲット指定スタイルの選択」ページで「このデプロイメントをライブラリとしてインストールする」を選択してください。

WebCenter Portal: Spacesインスタンスへのアプリケーションのデプロイ手順は、第55.2.3項「Spaces共有ライブラリ・リストの再ビルド」を参照してください。

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

この章では、WebCenter Portal: Frameworkアプリケーションに定義されたナビゲーション・モデルを取得して、そのモデルをポータルのページに公開する方法を示します。

この章には次の項が含まれます:

- 第13.1項「ナビゲーションの視覚化の概要」

- 第13.2項「組込みナビゲーション・タスク・フローのページ・テンプレートへの追加」

- 第13.3項「ナビゲーションのページ・テンプレートへのプログラムによる追加」

- 第13.4項「ポータル・ナビゲーションを使用したサイトマップの作成」

WebCenter Portal: Frameworkアプリケーションのナビゲーションの概要については、第10項「ポータル用のナビゲーション・モデルの構築」を参照してください。

ポータルにナビゲーション・モデルを定義する方法については、第10.2項「ナビゲーション・モデルの作成」および第10.3項「ナビゲーション・モデルへのリソースの追加」を参照してください。

13.1 ナビゲーションの視覚化の概要

ナビゲーションの視覚化により、ナビゲーションがポータルにどのように表示されるかが決まります。たとえば、ナビゲーションを各ページの上部に一連のタブとして、あるいはページの横にツリー構造として表示できます。あるいは、ナビゲーションの視覚化として、マスター/ディテール・ナビゲーションを表示する方法も一般的です。たとえば、ページの上部にタブがあり、各タブには、ページの横にツリー構造で表示される追加のナビゲーションがあります。

通常、ページ・テンプレートにナビゲーションの視覚化を追加するため、これを1箇所で定義してポータル全体に一貫して伝播させることができます。ただし、個々のページにナビゲーションの視覚化を追加することもできます。

WebCenter Portalには、ナビゲーションを視覚化するためにポータルのページ・テンプレートに追加できる組込みのナビゲーション・タスクが複数あります。詳細は、第13.2項「組込みナビゲーション・タスク・フローのページ・テンプレートへの追加」を参照してください。

組込みナビゲーション・タスク・フローにより、ナビゲーション・モデルをすばやくテストできますが、ナビゲーションの視覚化はかなり簡単になります。さらに高度な視覚化が必要になる場合も多くあります。これを行うには、ADFナビゲーション・コンポーネントとWebCenter PortalナビゲーションのAPIを使用して、各自のナビゲーションUIを作成する必要があります。詳細は、第13.3項「ナビゲーションのページ・テンプレートへのプログラムによる追加」を参照してください。

13.2 組込みナビゲーション・タスク・フローのページ・テンプレートへの追加

いずれかの組込みナビゲーション・タスク・フローをリソース・パレットからテンプレートの適切な場所にドラッグすることで、ナビゲーションをページ・テンプレートに追加できます。

WebCenter Portalには、ポータル・ナビゲーションの視覚化に役立つ3つのナビゲーション・タスク・フローがあります。これらは次のとおりです。

- 「ナビゲーション - ツリー」タスク・フロー - ツリー・ナビゲーションでは、ナビゲーション・リンクが階層構造で表示され、場合によっては複数レベルの階層が含まれます(図13-1)。ツリー・ナビゲーションでは、複雑な構造に比較的簡単にアクセスできます。通常、ツリースタイル・ナビゲーションは、ページの横に表示されます。

図13-1 「ナビゲーション - ツリー」タスク・フロー

「図13-1 「ナビゲーション - ツリー」タスク・フロー」の説明

- 「ナビゲーション - メニュー」タスク・フロー - メニュー・ナビゲーションでは、一連のタブ、メニュー、バー、ボタン、選択肢、あるいはリストとしてナビゲーション・リンクが表示されます。通常は、ページの上部または下部に横並びに表示されます(図13-2)。ページやドキュメントへのリンクの場合は、メニュー・ナビゲーションが適しています。この場合、使用可能なすべてのオプションを表示するのに十分な余裕があるため、アイテムの数を把握できます。メニュー・ナビゲーションは、アプリケーションの上部にドロップダウン・メニューを表示する場合に役立ちます。

注意:

「ナビゲーション - メニュー」タスク・フローがレンダリングできるのは、2つのレベルのナビゲーションのみです。

図13-2 「ナビゲーション - メニュー」タスク・フロー

「図13-2 「ナビゲーション - メニュー」タスク・フロー」の説明

- 「ナビゲーション - ブレッドクラム」タスク・フロー - ブレッドクラム・ナビゲーションでは、一連の水平リンクまたは垂直リンクが表示され、このリンクにより、ナビゲーション階層でのユーザーの現在位置がわかります(図13-3)。ブレッドクラムは、4つ以上のレベルなど階層が深い場合に特に役立つため、ユーザーは、階層の特定の場所に簡単にナビゲートできます。

図13-3 「ナビゲーション - ブレッドクラム」タスク・フロー

「図13-3 「ナビゲーション - ブレッドクラム」タスク・フローの説明」

追加のナビゲーション・タスク・フローは、Oracle Technology Networkからダウンロードして入手できます。

http://www.oracle.com/technetwork/middleware/webcenter/samples-196325.zip

zipファイルには、次のナビゲーション・タスク・フローが含まれます。

- リスト・ナビゲーション - 垂直リスト形式でナビゲーション・モデルをレンダリングします。フォルダとそのアイテムは、ドロップダウン・メニューとしてレンダリングされます。空のフォルダはレンダリングされません。

- リンク付きメニュー・ナビゲーション - 水平メニュー形式でナビゲーション・モデルをレンダリングします。最上位レベルのナビゲーション・アイテムの場合、フォルダはドロップダウン・メニューとしてレンダリングされ、子を持たないナビゲート可能リンクは最上位レベルのリンクとしてレンダリングされます。空のフォルダはレンダリングされません。

- ツリー・ナビゲーション - 垂直折りたたみツリー形式でナビゲーション・モデルをレンダリングします。

zipファイルをダウンロードし、そのコンテンツをローカルで抽出します。第16.4.4項「リソース・マネージャを使用してリソースをアップロードする方法」の説明に従い、1つ以上のEARファイルをアプリケーションにアップロードできます。

この項には次のサブセクションが含まれます:

- 第13.2.1項「ナビゲーション・タスク・フローをページ・テンプレートに追加する方法」

- 第13.2.2項「ナビゲーション・タスク・フローのパラメータ」

- 第13.2.3項「ナビゲーション・タスク・フローのスタイル・クラスに関する必知事項」

13.2.1 ナビゲーション・タスク・フローをページ・テンプレートに追加する方法

ナビゲーション・タスク・フローを追加する手順は、すべてのナビゲーション・タスク・フローで同じです。

ナビゲーション・タスク・フローを追加するには:

1. ナビゲーション・タスク・フローを追加するページ・テンプレートを開きます。

2. 「リソース・パレット」で、「WebCenter Portal - サービス・カタログ」を展開します。「タスク・フロー」で、目的のナビゲーション・タスク・フローを選択して、そのフローをテンプレートの目的の場所にドラッグします。

3. 表示されたメニューで、「リージョン」を選択して「タスク・フロー・バインディングの編集」ダイアログを開きます。
プロジェクトに「ナビゲーション・タスク・フロー」ライブラリを追加するように求められます。「ライブラリの追加」をクリックして確認します。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図13-4)で、タスク・フローのパラメータ値を必要に応じて指定します。詳細は、第13.2.2項「ナビゲーション・タスク・フローのパラメータ」を参照してください。

注意:

EL式を、ナビゲーション・タスク・フロー・バインディングのパラメータの値として使用できます。詳細は、付録F「式言語式」を参照してください。

図13-4 「ナビゲーション - メニュー」タスク・フローの「タスク・フロー・バインディングの編集」ダイアログ

「図13-4 「ナビゲーション - メニュー」タスク・フローの「タスク・フロー・バインディングの編集」ダイアログ」の説明

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

13.2.2 ナビゲーション・タスク・フローのパラメータ

表13-1では、「ナビゲーション - ツリー」タスク・フローに適用可能なタスク・フロー・バインディングのパラメータについて説明します。

注意:

ナビゲーション・タスク・フロー・バインディングのパラメータの値にEL式を使用できます。詳細は、付録F「式言語式」を参照してください。

表13-1 「ナビゲーション - ツリー」タスク・フロー・バインディングのパラメータ

パラメータ

デフォルト値

説明

navigationFile

/oracle/webcenter/portalapp/navigations/default-navigation-model

このタスク・フローに関連付けるナビゲーション・モデル。実際のナビゲーション・モデル定義ファイルは、.xmlを省略して指定できます。たとえば、次のようになります。

/oracle/webcenter/portalapp/navigations/myNavigationModel

EL式も入力できます。たとえば、次のようになります。

#{navigationContext.defaultNavigationModel}

startNode

/

ナビゲーションを開始するナビゲーション・モデル内のポイント。

例:

- 特定のページをナビゲーションの開始ポイント(ルート)として使用するには、そのページのパスを入力します。たとえば、次のようになります。

pages_home

- 現在選択されているページをナビゲーションのルートとして使用するには、次のEL式を使用します。

#{navigationContext.navigationModel['modelPath=path'].currentSelection.prettyUrl}

- 現在選択されているページの特定レベルのパスをルートとして使用するには、次のEL式を使用します。

#{navigationContext.navigationModel['modelPath=path'].currentSelection.prettyUrlPath[level]}

ここで:

pathは、ナビゲーション・モデルXMLファイルへのパスです(末尾の.xmlを省略しています)。たとえば、次のようになります。

/oracle/webcenter/portalapp/navigations/myNavigationModel

levelは、開始するパスのレベルです。

showRoot

none

ツリーのナビゲーションの開始ポイント(ルート)をレンダリングするかどうかを指定します。

次のうち1つを入力してください。

- none - ルートをレンダリングしません。

- node - ルートをレンダリングします。

- box - ルートをボックスのヘッダーとしてレンダリングします。

depth

1

ツリーが最初にレンダリングされるときに示されるレベルの数。

次のうち1つを入力してください。

- 1 - 最上位レベルのノードのみを表示します。他のノードはすべて最初に折りたたまれています。

- 2 - 子ノードの第1レベルを展開します。

- 3 - 子ノードの第1レベルと第2レベルを展開します。

- all - すべてのノードを展開します。

注意: このパラメータは、styleパラメータがcollapsedに設定される場合のみ適用されます。styleパラメータがexpandedに設定される場合、このパラメータの値にかかわらず、すべてのノードが表示されます。

style

collapsed

ナビゲーションのスタイル。

次のうち1つを入力してください。

- collapsed - (depthパラメータで指定された)指定のレベルを、最初に折りたたまれた状態でレンダリングします。

- expanded - すべてのノードをレンダリングします。すべての子を表示するように展開されます。

- list - 最上位レベルのリソースのフラット・リストをレンダリングします。最上位レベルのリソースのいずれかがフォルダの場合、そのフォルダのコンテンツがドロップダウン・メニューに表示されます。

注意: listを入力すると、depthパラメータとshowRootパラメータが上書きされます。

showIcons

true

各リソースのアイコンをレンダリングするかどうかを指定します。

trueまたはfalseを入力します。

navigationEditMode

未使用

未使用

表13-2では、「ナビゲーション - メニュー」タスク・フローに適用可能なタスク・フロー・バインディングのパラメータについて説明します。

表13-2 「ナビゲーション - メニュー」タスク・フロー・バインディングのパラメータ

パラメータ

デフォルト値

説明

navigationFile

/oracle/webcenter/portalapp/navigations/default-navigation-model

このタスク・フローに関連付けるナビゲーション・モデル。実際のナビゲーション・モデル定義ファイルは、.xmlを省略して指定できます。たとえば、次のようになります。

/oracle/webcenter/portalapp/navigations/myNavigationModel

EL式も入力できます。たとえば、次のようになります。

#{navigationContext.defaultNavigationModel}

startNode

/

ナビゲーションを開始するナビゲーション・モデル内のポイント。

例:

- 特定のページをナビゲーションの開始ポイント(ルート)として使用するには、そのページのパスを入力します。たとえば、次のようになります。

pages_home

- 現在選択されているページをナビゲーションのルートとして使用するには、次のEL式を使用します。

#{navigationContext.navigationModel['modelPath=path'].currentSelection.prettyUrl}

- 現在選択されているページの特定レベルのパスをルートとして使用するには、次のEL式を使用します。

#{navigationContext.navigationModel['modelPath=path'].currentSelection.prettyUrlPath[level]}

ここで:

pathは、ナビゲーション・モデルXMLファイルへのパスです(末尾の.xmlを省略しています)。たとえば、次のようになります。

/oracle/webcenter/portalapp/navigations/myNavigationModel

levelは、開始するパスのレベルです。

depth

未使用

未使用

style

menu

第1レベルのリソースをレンダリングするためのスタイル。

tabs、bar、buttons、choice、list、menuのいずれかを入力します。

注意:

- レンダリングするリソースがナビゲートできない場合(フォルダなど)、そのリソースは、タブ、バー、ボタン、選択肢またはリストとして表示できません。これは、styleパラメータがmenuに設定される場合のみ表示できます。

- styleがmenuに設定される場合、フォルダは、1つのレベルのドロップダウン・メニューでレンダリングされます。

- styleがmenuに設定され、subStyleがmenuに設定される場合、フォルダは、2つのレベルのドロップダウン・メニューでレンダリングされます。

- styleおよびsubStyleがmenuに設定された状態でナビゲート可能アイテムがレンダリングされる場合、そのアイテムは2回レンダリングされます。一度はドロップダウン・メニューとして、もう一度はアイテム自体へのリンクとしてレンダリングされます。

subStyle

menu

第2レベルのナビゲーション・アイテムをレンダリングするためのスタイル(該当する場合)。

styleがmenuに設定される場合、menuまたはdonotdisplayを入力します。

styleが他の値に設定される場合、tabs、bar、buttons、choice、listまたはdonotdisplayを入力します。

showIcons

true

各リソースのアイコンをレンダリングするかどうかを指定します。

trueまたはfalseを入力します。

表13-3では、「ナビゲーション - ブレッドクラム」タスク・フローに適用可能なタスク・フロー・バインディングのパラメータについて説明します。

表13-3 「ナビゲーション - ブレッドクラム」タスク・フロー・バインディングのパラメータ

パラメータ

デフォルト値

説明

navigationFile

/oracle/webcenter/portalapp/navigations/default-navigation-model

このタスク・フローに関連付けるナビゲーション・モデル。実際のナビゲーション・モデル定義ファイルは、.xmlを省略して指定できます。たとえば、次のようになります。

/oracle/webcenter/portalapp/navigations/myNavigationModel

EL式も入力できます。たとえば、次のようになります。

#{navigationContext.defaultNavigationModel}

startNode

/

ナビゲーションを開始するナビゲーション・モデル内のポイント。

例:

- 特定のページをナビゲーションの開始ポイント(ルート)として使用するには、そのページのパスを入力します。たとえば、次のようになります。

pages_home

- 現在選択されているページをナビゲーションのルートとして使用するには、次のEL式を使用します。

#{navigationContext.navigationModel['modelPath=path'].currentSelection.prettyUrl}

- 現在選択されているページの特定レベルのパスをルートとして使用するには、次のEL式を使用します。

#{navigationContext.navigationModel['modelPath=path'].currentSelection.prettyUrlPath[level]}

ここで:

pathは、ナビゲーション・モデルXMLファイルへのパスです(末尾の.xmlを省略しています)。たとえば、次のようになります。

/oracle/webcenter/portalapp/navigations/myNavigationModel

levelは、開始するパスのレベルです。

showRoot

false

ブレッドクラムの開始ノード(ルート)を表示するかどうかを指定します。

trueまたはfalseを入力します。

style

horizontal

ブレッドクラムを水平と垂直のどちらで表示するかを指定します。

horizontalまたはverticalを入力します。

13.2.3 ナビゲーション・タスク・フローのスタイル・クラスに関する必知事項

WebCenter Portalには、タスク・フローの外観の変更に使用できる、ナビゲーション・タスク・フローごとのスタイル・クラスが用意されています。これらのスタイル・クラスを使用するには、アプリケーションで使用されるスキンCSSファイル(portal-skin.cssなど)にスタイル・クラスを追加します。

- WCTreeNav - 「ナビゲーション - ツリー」タスク・フローの外観の変更に使用します。

- WCMenuNav - 「ナビゲーション - メニュー」タスク・フローの外観の変更に使用します。

- WCBreadcrumbNav - 「ナビゲーション - ブレッドクラム」タスク・フローの外観の変更に使用します。

例13-1に、「ナビゲーション - メニュー」タスク・フローの背景色を変更するために、スキンCSSファイルに追加する内容を示します。

例13-1 「ナビゲーション - メニュー」タスク・フローの背景色の変更

.WCMenuNav af|menuBar {
background-color: red;
}

スキンの詳細は、第14章「スキンの作成および管理」を参照してください。

13.3 ナビゲーションのページ・テンプレートへのプログラムによる追加

組込みナビゲーション・タスク・フローが要件を満たさない場合、WebCenter Portalで提供されるAPIを使用して、ナビゲーション・モデル用の独自のUIを作成できます。

注意:

ナビゲーション・モデルを使用してアプリケーション内でナビゲーションをトリガーするタスク・フローには、wcnav_outcomeをルート・レベルに伝播するwcnav_parentActionというparent-actionアクティビティをタスク・フロー定義に次のように含める必要があります。

<parent-action id="wcnav_parentAction">
<root-outcome>wcnav_outcome</root-outcome>
</parent-action>

WebCenter Portalには、ポータルにナビゲーションを追加するためのAPIが2セット用意されています。

- 式言語(EL)のAPI - EL式を使用して、ナビゲーション・モデルとナビゲーション・リソースを取得します。

- REST API - 標準のHTTPメソッドを使用して、ナビゲーション・モデルとナビゲーション・リソースを指し示し、取得されたオブジェクトの標準表現を返します。REST APIは、クライアント側のプログラミング言語(JavaScript + HTMLなど)や環境(iPhoneなど)の利用時に使用できます。

この項には次のサブセクションが含まれます:

- 第13.3.1項「ナビゲーション式言語のAPIの使用」

- 第13.3.2項「ナビゲーションREST APIの使用」

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

WebCenter Portalには、式言語(EL)の一連のAPIが用意されており、これらを使用すると、ナビゲーション・モデルを取得して、そのモデルを実行時モデルとして表すことができます。実行時モデルは、ADF Facesナビゲーション・コンポーネントに直接バインドできます。

使用可能なナビゲーションEL式は、第F.5項「ナビゲーションに関連するEL」にすべてリストされています。

この項には次のサブセクションが含まれます:

- 第13.3.1.1項「ナビゲーション・コンテキストの概要」

- 第13.3.1.2項「ナビゲーション実行時モデルの概要」

- 第13.3.1.3項「ナビゲーション・リソースの概要」

- 第13.3.1.4項「ナビゲーション・モデルをリンクのリストとしてレンダリングする方法」

- 第13.3.1.5項「ナビゲーション・モデルをツリーとしてレンダリングする方法」

- 第13.3.1.6項「ナビゲーション・モデルを3レベルのメニューとしてレンダリングする方法」

- 第13.3.1.7項「ナビゲーション・モデルをブレッドクラムとしてレンダリングする方法」

- 第13.3.1.8項「マスター/ディテール・ナビゲーションのレンダリング方法」

注意:

この項では、ナビゲーションEL APIの使用方法について、いくつかの例を紹介します。完全な作業例については、WebCenter Portal: Frameworkアプリケーション・テンプレートを使用したアプリケーションの作成時に作成されるデフォルトのページ・テンプレート(pageTemplate_globe.jspxおよびpageTemplate_swooshy.jspx)を参照してください。

13.3.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}

例

例13-2では、現在のナビゲーション・モデルにアクセスして<af:outputText/>でツリーをレンダリングする、ナビゲーション・コンテキストを使用した簡単なツリーUIが作成されます。

例13-2 簡単なツリー・ナビゲーション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>

例13-3では、ナビゲーション・コンテキストのprocessActionリスナーを使用して、現在のノードをnodeというパラメータでactionListenerに属性として渡すADF commandImageLinkコンポーネントのナビゲーションを処理します。

例13-3 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>

13.3.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']}

例

例13-4では、現在のナビゲーション・モデルのメニュー・モデルをブレッドクラムとしてレンダリングします。

例13-4 ナビゲーション・モデルのメニュー・モデルとしてのレンダリング

<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>

例13-5では、デフォルトのナビゲーション・モデルに基づき、アプリケーションのサイトマップを作成します。

例13-5 サイトマップの作成

<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>

サイトマップの詳細は、第13.4項「ポータル・ナビゲーションを使用したサイトマップの作成」を参照してください。

13.3.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.5項「ナビゲーションに関連するEL」を参照してください。

例

例13-6では、ADF commandImageLinkコンポーネントを様々な属性でレンダリングします。

例13-6 属性による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>

例13-7では、パラメータを介して、リソースから対応するページに渡される値にアクセスします。

例13-7 ページ・パラメータへのノード値の引渡し

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>

例13-8では、ノードにナビゲートできるかどうかに基づき、ブレッドクラム・リンクを条件付きで表示します。これは、UIコンポーネントの基準をノードのタイプにも置いています。

例13-8 ナビゲーション・ノードの条件付き表示

<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>

13.3.1.4 ナビゲーション・モデルをリンクのリストとしてレンダリングする方法

ポータルのナビゲーションを視覚化するには、一般的な方法としてリンクのリストがあります。リンクをクリックすると、そのリンクに関連付けられたリソースにナビゲートします。

例13-9では、現在のナビゲーション・モデルのリスト・モデルを取得し、そのモデルをページに垂直にレンダリングします。コードは、各ノードをADF commandImageLinkコンポーネントに順にバインドしながら、ナビゲーション・モデルを反復します。ノードに子が含まれる場合、別のイテレータがページにその子をレンダリングします。ノードがナビゲートできない場合、そのノードはリンクとしてレンダリングされません。現在選択されているノードは太字で表示されます。

例13-9 リンクのリストとしてのナビゲーション

<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>

13.3.1.5 ナビゲーション・モデルをツリーとしてレンダリングする方法

ポータルのナビゲーションを視覚化するには、ツリー構造による方法もあります。ナビゲーション・ツリーは、通常、ページの横にリストされるため、ナビゲーション階層全体を表示するには便利な方法です。ユーザーは、ナビゲーションの任意のノードにすぐにナビゲートできます。ツリー構造を使用する場合、リンクの簡単なリストに比べて、ユーザーがナビゲーション・モデルの様々なノードの展開と折りたたみを行えるという利点があります。

ページ・テンプレートにツリー構造を含めるには、ADF Faces treeナビゲーション・コンポーネントをナビゲーション・モデルにバインドできます。この方法を例13-10に示します。

例13-10 ツリーとしてのナビゲーション

<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>

13.3.1.6 ナビゲーション・モデルを3レベルのメニューとしてレンダリングする方法

ナビゲーションをメニューとしてレンダリングすることもできます。メニューには、最上位レベルのナビゲーションが表示されます。ユーザーが特定のノード上にマウスを置くと、そのノードが子を持つ場合、子はポップアップ・メニューで表示されます。

図13-4は、現在のナビゲーション・モデルのリスト・モデルを取得し、そのモデルをページに垂直にレンダリングしています。コードはナビゲーション・モデルを反復します。ノードに子が含まれる場合、別のイテレータがその子を反復します。子を持たないノードは、メニュー・アイテムとしてレンダリングされます。第2レベルのナビゲーション・モデルでは、いずれかのノードが子を持つ場合、また別のイテレータが実行されます。繰り返しになりますが、子を持たないノードは、メニュー・アイテムとしてレンダリングされます。第3レベルのナビゲーション・ノードでは、ノードはメニュー・アイテムとしてレンダリングされます。ナビゲートできないノードはリンクとしてレンダリングされません。現在選択されているノードは太字で表示されます。

例13-11 メニューとしてのナビゲーション

<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>

13.3.1.7 ナビゲーション・モデルをブレッドクラムとしてレンダリングする方法

ユーザーがポータル・ナビゲーション内で自身の位置をすばやく判断できるように、ページにブレッドクラムの証跡を提供できます。ブレッドクラムは、ポータル内の現在位置と、その位置に到達するまでのナビゲーション経由のパスを示します。ユーザーは、そのパスに従って任意のポイントにすぐに戻ることができます。ブレッドクラムは、通常、他のフォームのナビゲーションに加えてページ上で使用されます。

ページ・テンプレートにブレッドクラムを含めるには、ADF Faces breadCrumbsナビゲーション・コンポーネントをナビゲーション・モデルにバインドできます。この方法を例13-12に示します。

例13-12 ブレッドクラムとしてのナビゲーション

<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>

13.3.1.8 マスター/ディテール・ナビゲーションのレンダリング方法

ポータルでは、多くの場合、マスター/ディテール・ナビゲーションの視覚化が提供されます。たとえば、ページの上部にタブとして表示され、各タブにはページの横にツリー構造として表示される追加のナビゲーションがあります。

例13-13のマスター/ディテール・ナビゲーションでは、マスターおよびディテール・ナビゲーションに同じナビゲーション・モデルが使用されます。マスター・ナビゲーションは、最上位レベルのナビゲーション・モデルを、ページ上部のリンクのリストとしてレンダリングします。ディテール・ナビゲーションは、現在選択されている最上位レベルのノードの子をツリーとしてレンダリングします。

例13-13 単一のナビゲーション・モデルを使用したマスター/ディテール・ナビゲーション

<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.xml']
.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.xml']
.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.xml']
.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つの異なるナビゲーション・モデル(マスター・ナビゲーション用とディテール・ナビゲーション用)を使用するように記述することもできます。例13-14にその方法を示します。

例13-14 複数のナビゲーション・モデルを使用したマスター/ディテール・ナビゲーション

<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.xml']
.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.xml']
.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.xml']
.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>

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

Oracle WebCenter Portalには、アプリケーションのナビゲーション・モデルにアクセスしてそのモデルを操作するためのREST APIが用意されています。ナビゲーションREST APIを使用して、ナビゲーション・モデルを視覚化するための独自のインタフェースを作成します。RESTは、一般的にクライアント側でスクリプト化されるリッチ・インターネット・アプリケーションの作成時に使用され、サーバー側アプリケーションからのデータと対話する機能を必要とします。たとえば、WebCenter Portal iPhoneアプリケーションは、WebCenter PortalのREST APIを使用してWebCenter Portal: Spacesアプリケーションと対話します。

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

他のWebCenter PortalのREST APIと同様に、ナビゲーションREST APIを使用する開始ポイントとして、GETリクエストをリソース索引に送信します。

http://host:port/rest/api/resourceIndex

このリクエストに対するレスポンスにより、次の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>

この情報を使用すると、表13-4にリストされるURIで、特定のナビゲーション・モデルとその中にあるリソースに関する情報の取得を開始できます。

表13-4 ナビゲーションの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要素があり、この要素を使用すると、ナビゲーション・モデル階層をさらにドリルダウンできます。

13.4 ポータル・ナビゲーションを使用したサイトマップの作成

検索エンジンがWebサイトをクロールすると、標準リンクのHTML(<a href="url">text</a>など)を解析します。ただし、ADFベースのWebサイトでは、リンクがJavaScriptとして生成されます。このため、これらをブラウザで実行すると、ページの変更やナビゲーションが生じます。これらのJavaScriptリンクは、検索エンジンで解釈できません。

GoogleやBingなど、一般的な一部の検索エンジンではサイトマップがサポートされます。サイトマップは、サイトのURLと、各URLに関する追加メタデータ(たとえば、URLが最終更新された場合、通常のその変更頻度、サイトの他のURLと比較した重要度など)をリストするXMLファイルであるため、検索エンジンはさらに知的にサイトをクロールできます。サイトマップを検索エンジンに送信したり、robots.txtファイルで参照することで、索引用にページのリストを検索エンジンに送ることができます。

サイトマップの詳細を参照するには、次の場所に移動してください:

http://sitemaps.org/

WebCenter Portalアプリケーションでは、サイトマップURLを指定できます。このURLを検索エンジンに登録すると、そのアプリケーションでページ・セットへの索引付けが行われます。検索エンジンのユーザー・エージェントが、ADFでサポートされるエージェントと一致するする場合、リクエストに対してJavaScriptではなくHTMLが返されます。

注意:

現在、ADFに登録されているユーザー・エージェントは、Googleのgooglebotのみです。

例13-15に示すように、アプリケーションのサイトマップは、ナビゲーション・モデルに基づき作成できます。

例13-15 サイトマップの作成

<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>

14 スキンの作成および管理

スキンは、アプリケーションの外観を定義します。スキンを使用すると、アプリケーション内の全ページである程度の整合性を達成でき、自社に適したルック・アンド・フィールを実現できます。

この章では、スキンの作成および管理の方法について説明します。次の項が含まれます:

- 第14.1項「スキンの概要」

- 第14.2項「JDeveloperでのスキンの作成」

- 第14.3項「portal-skin.cssの編集」

- 第14.4項「スキンの実行時管理の有効化」

- 第14.5項「スキンのWebCenter Portal: Frameworkアプリケーションへの適用」

- 第14.6項「Spacesのスキンを作成および管理する方法」

- 第14.7項「個別共有ライブラリとしてのスキンのデプロイ」

- 第14.8項「ユーザー用スキンの条件付変更」

- 第14.9項「スキンでの問題のトラブルシューティング」

- 第14.10項「スキン関連のファイル」

14.1 スキンの概要

スキンを使用すると、色、フォント、イメージ、およびアプリケーション・コンポーネントの高さや幅などのディメンションの詳細を定義して、自社に適したルック・アンド・フィールを表すことができます。

スキンは、Cascading Style Sheet (CSS)仕様に基づいています。スキンは、アプリケーション・コンポーネントのスタイルを定義する種々のスキン・セレクタを含むCSSファイルです。スタイル関連のプロパティを変更することにより、任意のコンポーネントのルック・アンド・フィールを調整できます。アプリケーション内でスキンを使用すると、各コンポーネントに対して個別にスタイルを指定したり、各ページにスタイルシートを挿入する必要がなくなります。各コンポーネントで自動的に、スキンで定義されているスタイルが使用されます。スキンにより、ポータル・ページ自体を変更せずにアプリケーションの外観を変更できます。

ADF Facesスキンでは、WebCenter Portalアプリケーションのルック・アンド・フィールを制御します。ADF Facesでは、fusion、blafplus-rich、blafplus-medium、simpleなどの様々なビルトイン・スキンがすぐに使える状態で用意されています。デフォルトで、Frameworkアプリケーションは、fusionFx-v1.desktopスキンの拡張であるportalスキンを使用します。

アプリケーションで使用できる組込みスキンがビジネス要件に合ない場合、Oracle JDeveloperで独自のカスタム・スキンを作成できます。カスタム・スキンで作業する際には、スキン関連ファイル(adf-config.xml、trinidad-config.xmlおよびtrinidad-skins.xml)の編集が必要となることがあります。これらのファイルの詳細は、第14.10項「スキン関連のファイル」を参照してください。

Oracle WebCenter Portalはスキンの実行時管理をサポートしているため、アプリケーション・ユーザーはアプリケーションのデプロイ後でも、ポータルの開発を続行できます。実行時管理を有効にすると、権限のあるアプリケーション・ユーザーは、アプリケーションを再デプロイしなくても、実行時にスキンを作成および管理できます。実行時に作成されたスキンを設計時に戻し、編集してデプロイ済アプリケーションにアップロードできます。詳細は、第14.4項「スキンの実行時管理の有効化」を参照してください。

JDeveloperでは、WebCenter PortalのSpacesアプリケーションで使用する新しいスキンを作成できます。JDeveloperでは、もともとSpacesで作成したスキンを編集し、その編集済スキンをSpacesにアップロードして戻すこともできます。詳細は、第14.6項「Spacesのスキンを作成および管理する方法」を参照してください。

14.2 JDeveloperでのスキンの作成

デフォルトで、Frameworkアプリケーションは、portal-skin.cssファイルで定義されるportalスキンを使用します。このファイルは必要に応じて簡単に編集できます。ただし、アプリケーションでカスタム・スキンを使用する場合は、CSSファイルを作成して、必要なスキン・セレクタを定義する必要があります。

この項には次のサブセクションが含まれます:

- 第14.2.1項「スキン作成に関する必要な知識」

- 第14.2.2項「CSSファイルを作成する方法」

- 第14.2.3項「スキン・セレクタを定義する方法」

14.2.1 スキン作成に関する必要な知識

デフォルトでは、CSSファイルを作成すると、JDeveloperではそのファイルはファイル・システム上のAPPLICATION_ROOT/Portal/public_html/cssフォルダの下に格納されます。アプリケーション・ナビゲータで、図14-1に示すように、スキンはフォルダ階層で表示されます。

図14-1 JDeveloperのデフォルトの場所で作成されたスキン

「図14-1 JDeveloperのデフォルトの場所で作成されたスキン」の説明

ただし、このデフォルトの場所に作成されたスキンは、実行時には管理できません。権限のあるアプリケーション・ユーザーが実行時にスキンを管理できるようにするには、スキンをポータル・リソースとしてリソース・マネージャで公開する必要があります。スキンをポータル・リソースとして公開するには、次のパスでスキンを作成する必要があります。

APPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/skins

アプリケーション・ナビゲータでは、このスキンは図14-2に示されるようなフォルダ階層内にリストされます。

図14-2 ポータル・リソースとして作成されたスキン

「図14-2 ポータル・リソースとして作成されたスキン」の説明

CSSファイルの作成後、アプリケーション内の必須コンポーネントで必要なADF Facesスキン・セレクタを定義する必要があります。たとえば、.AFDefaultFontFamily:aliasセレクタを使用して、次のようにアプリケーションにフォント・ファミリを指定できます。

.AFDefaultFontFamily:alias {
font-family: Tahoma, Verdana, Helvetica, sans-serif;
}

ポータル・リソースとして公開されたスキンに関連するイメージを、次の場所に保存する必要があります。

APPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/shared

競合やイメージが上書きされるのを避ける最良の方法として、イメージをsharedディレクトリの下のサブディレクトリに保存できます。イメージ参照を追加するには、次の例に示された形式を使用します。

.AFBrandingBarLogo {
background-image:
url('/oracle/webcenter/portalapp/shared/skins/images/image1.gif');

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

CSSファイルを作成するには:

1. Oracle JDeveloperでアプリケーションを開きます。

2. 「CSSレベル3」および「ADF Faces」が選択されていることを確認します。

1. メニュー・バーから、「ツール」→「プリファレンス」→「CSSエディタ」の順に選択します。

2. 「CSSレベルをサポート」リストから、「CSSレベル3」を選択します。

3. 「サポート対象コンポーネント」に対して、「ADF Faces拡張機能」を選択します。

3. 「ポータル」プロジェクトを選択し、「ファイル」メニューから、「新規」を選択します。

4. 「新規ギャラリ」ダイアログの「カテゴリ」で、「Web層」を開き、「HTML」を選択します。

5. 「CSSファイル」を選択し、「OK」をクリックします。

6. 「Cascading Style Sheetの作成」ダイアログの「ファイル名」フィールドに、スキンの名前を入力します。

7. 「ディレクトリ」フィールドに、CSSファイルを作成する場所のパスを入力します。「参照」ボタンを使用して、そのパスを指定します。

注意:

Frameworkアプリケーションで、スキンを実行時リソース・マネージャで公開できるようにするには、次のパスのskinsルート・ディレクトリの下か、そのサブディレクトリにスキンを作成する必要があります。

APPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/skins

8. 「OK」をクリックします。
スキンのCSSファイルが「ソース・ビュー」で開きます。

これで、スキンに必要なスキン・セレクタを定義できます。詳細は、第14.2.3項「スキン・セレクタを定義する方法」を参照してください。

14.2.3 スキン・セレクタを定義する方法

ADF Facesスキン・セレクタを使用して、アプリケーションの様々なコンポーネントのルック・アンド・フィールを定義します。

詳細の参照先は、次のとおりです。

- 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ユーザー・インタフェース開発者ガイド』のスキン・スタイル・プロパティの定義に関する項およびコンポーネントのスタイル・プロパティの変更に関する項を参照してください。

14.3 portal-skin.cssの編集

この項には次のサブセクションが含まれます:

- 第14.3.1項「portal-skin.cssに関する必要な知識」

- 第14.3.2項「portal-skin.cssの編集方法」

14.3.1 portal-skin.cssに関する必要な知識

デフォルトでは、Frameworkアプリケーションはportal-skin.cssスキン・ファイルを使用するように構成されます。このスキン・ファイルには種々の便利なスキン・セレクタのスケルトン構造が用意されていて、各スキン・セレクタの用途を説明するコメントアウト済のエントリが含まれています(図14-3)。

図14-3 portal-skin.cssファイル

「図14-3 portal-skin.cssファイル」の説明

portal-skin.cssを簡単に変更するだけで、デフォルトのスキン設定を要件に応じてカスタマイズできます。新規のスキン・セレクタをこのファイルに追加できます。必要な値を指定して、スキン・セレクタのデフォルト設定をオーバーライドすることもできます。たとえば、アプリケーション・コンテンツに16pxのフォント・サイズを設定するには、.AFDefaultFont:aliasスキン・セレクタを検索して、次の例の太字でマークされたコードを追加します。

.AFDefaultFont:alias
{
font-size:16px;
}

14.3.2 portal-skin.cssの編集方法

portal-skin.cssを編集するには:

1. JDeveloperでアプリケーションを開きます。

2. アプリケーション・ナビゲータで、次のフォルダ・パスにナビゲートします。Portal→Web Content→oracle→webcenter→portalapp→skins

3. portal-skin.cssを右クリックして、「開く」を選択します。

4. ビジュアル・エディタで編集するスキン・セレクタを検索し、必要な設定を追加します。
スキン・セレクタの詳細は、第14.2.3項「スキン・セレクタを定義する方法」を参照してください。

5. portal-skin.cssを保存します。

14.4 スキンの実行時管理の有効化

この項には次のサブセクションが含まれます:

- 第14.4.1項「スキンの実行時管理の有効化に関する必要な知識」

- 第14.4.2項「スキンの実行時管理を有効にする方法」

- 第14.4.3項「デプロイしたスキンのさらなる開発を有効にする方法」

- 第14.4.4項「JDeveloperでのスキンの作成および実行時における有効化」

- 第14.4.5項「実行時にスキンを作成および管理する方法」

14.4.1 スキンの実行時管理の有効化に関する必要な知識

Frameworkアプリケーションのリソース・マネージャを使用すると、管理者権限のあるユーザーは、スキンなどポータル・リソースを実行時に作成および変更できるようになります。リソース・マネージャでスキンを公開することによって、管理者は実行時にそのスキンを管理できます。アプリケーションのデプロイ後にさらにスキンを作成して公開する場合には、JDeveloperからランタイム・アプリケーションにそれらを公開します。実行時に、リソース・マネージャには、エクスポートしたスキンをアップロードするオプションが用意されています。

注意:

実行時にスキンを作成した場合に、設計時環境にインポートして戻さないときは、新規スキンがアプリケーションの再デプロイ時に失われることがあります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のリソース・カスタマイズの保存に関する項を参照してください。

スキンの実行時管理を有効化するには、そのスキンをポータル・リソースとしてリソース・マネージャに追加する必要があります。スキンをポータル・リソースとして追加するには、そのスキンがAPPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/skinsディレクトリに配置されている必要があります。

スキンをポータル・リソースとして公開する際、特定の属性を設定する必要があります(図14-4)。表14-1では、スキンに固有の属性について説明します。汎用属性の詳細は、第16.2.1項「リソースをリソース・マネージャに追加する方法」を参照してください。

注意:

「コンテンツ・ディレクトリ」フィールドは、APPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/sharedディレクトリまたはその下のサブディレクトリを指す必要があります。これは、イメージ、JavaScript、スタイルシート、HTMLファイルなど、リソースの依存オブジェクトの格納場所のパスです。このパスに配置されたオブジェクトのみが、スキンのエクスポート・アーカイブに含まれ、実行時にアップロードされます。

図14-4 ポータル・リソースとしてのスキンの作成

「図14-4 ポータル・リソースとしてのスキンの作成」の説明

表14-1 スキン固有の属性

プロパティ

説明

Skin ID

スキンの一意の識別子を指定します。通常、これはBrightBlue.desktopのような、スキン・ファミリとレンダリング・キットとの組合せです。

Skin Family

スキンが属するファミリを指定します。これは、様々なレンダリング・キットで多数のスキンにより使用される識別子です。たとえば、BrightBlueという名前のファミリがあるとします。これは、レンダリング・キットのdesktopまたはmobileで使用できます。

スキン・ファミリは、実際には、trinidad-config.xmlが特定の属性で適合するスキンを検索する際に使用する値です。

Skin Family属性が一意であることを確認してください。Frameworkアプリケーションでは、デフォルト・スキンはportal-skin.cssファイルで、スキン・ファミリはportalです。portalを他のスキンのスキン・ファミリのIDとして使用していないことを確認します。

Skin Extends

拡張するスキンのIDを指定します。

新規スキンを作成する場合、拡張するには、fusionFx-v1.desktopが最も一般的なスキンです。

表14-2に、Spacesで使用できる組込みスキンのスキンIDをリストします。

注意:

スキンはスキンIDにより内部で識別されます。JDeveloperで既存のカスタム・スキンをポータル・リソースとして追加する際には、Skin ID、Skin FamilyおよびSkin Extendsの値を変更しないでください。さもないと、スキンをアプリケーションにアップロードしたときに、新規スキンとして含められ、既存スキンは置換されません。

Spacesのスキンの拡張

SpacesのスキンをJDeveloperに取り込んで、さらに開発することが可能です(第14.6項「Spacesのスキンを作成および管理する方法」)。新規スキンをJDeveloperで作成して、Spacesアプリケーションで使用することもできます。既存のスキンを拡張して新規スキンを作成できます。JDeveloperで、blafplus-rich.desktop、fusion.desktop、fusionFx-v1.desktopなどの組込みADF Facesスキンを拡張できます。Spacesで使用できる組込みスキンのいずれかを拡張することも可能です。表14-2にSpacesで使用できる組込みスキンのスキンIDをリストしています。

表14-2 Spacesでの組込みスキンのID

Spacesでの組込みスキン

スキンID

フュージョンFX

webcenter-fusion.desktop

Spaces FX

webcenterfx.desktop

14.4.2 スキンの実行時管理を有効にする方法

スキンのCSSファイルのポップアップ・メニューから次のオプションを使用して、リソース・マネージャでスキンを登録、更新または登録解除します。

- ポータル・リソースの作成: スキンをポータル・リソースとして公開します。これにより、アプリケーションのgeneric-site-resources.xmlファイルにスキンのエントリが作成されます。実行時に、そのスキンを選択できるようになります。
詳細は、第16.2.1「リソースをリソース・マネージャに追加する方法」を参照してください。スキン・エントリの作成時には、表14-1で説明されるスキン固有の属性を指定する必要があります。

- ポータル・リソースの更新: スキン・エントリの作成時に定義した属性を編集します。詳細は、第16.2.3「ポータル・リソースのプロパティを更新する方法」を参照してください。

- ポータル・リソースの削除: generic-site-resources.xmlファイルからスキンのエントリを削除します。詳細は、第16.2.4項「リソースをリソース・マネージャから削除する方法」を参照してください。

14.4.3 デプロイしたスキンのさらなる開発を有効にする方法

リソースの実行時管理を有効にすると、権限のあるユーザーは新規スキンを作成したり、実行時に既存のスキンを変更できるようになります。ユーザーがスキンを実行時に作成または編集する場合は、さらなる拡張のためにJDeveloperにスキンを戻す必要があることがあります。このタイプのラウンドトリップ開発には、次の内容が含まれます。

- スキンのEARファイル取得のためにデプロイ済アプリケーションからスキンをダウンロードする

- スキンのEARファイルをJDeveloperにインポートする

- JDeveloperでスキンを編集する

- JDeveloperでEARファイルとして編集したスキンをエクスポートする

- EARファイルをデプロイ済アプリケーションにアップロードして戻す

この項では、JDeveloperでスキンをインポートおよびエクスポートする方法について説明します。次の項が含まれます:

- 第14.4.3.1,項「スキンのインポート」

- 第14.4.3.2項「スキンのエクスポート」

デプロイ済アプリケーション内のリソースのダウンロードとアップロードに関する一般的な情報は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリソースのダウンロードに関する項とリソースのアップロードに関する項を参照してください。

14.4.3.1 スキンのインポート

スキンをデプロイ済アプリケーションからダウンロードすると、作成されるEARファイルには、スキンのCSSファイルおよびgeneric-site-resources.xmlファイル(ダウンロードしたスキン固有のメタデータが記述されています)が含まれるEARファイルが作成されます。

スキンのダウンロード後、EARファイルをJDeveloperにインポートする必要があります。インポートの際、CSSファイルが次のパスに抽出されます。

APPLICATION_ROOT/Portal/public_html/oracle/webcenter/siteresources/scopedMD/scope_GUID/

リソースのインポートの詳細な手順は、第16.4.2項「ポータル・リソースをJDeveloperにインポートする方法」を参照してください。

スキンのインポート後に、設計時に他のスキン・ファイルのようにCSSファイルを編集できます。スキンの編集の詳細は、第14.2.3項「スキン・セレクタを定義する方法」を参照してください。更新済のスキンをデプロイ済アプリケーションにエクスポートする必要があります。

注意:

スキンをデプロイ済アプリケーションからダウンロードしてから、それをJDeveloperにインポートして変更する場合には、Skin Family、Skin IDおよびSkin Extendsの属性値を変更しないでください。さもないと、スキンをデプロイ済アプリケーションにアップロードする際に、既存のスキンが置換されません。

注意:

インポート済スキンでイメージ(またはJavaScriptsやHTMLファイルなど、その他の依存オブジェクト)を編集または追加するには、イメージを次のパス(実行時に作成されたスキンのデフォルトのコンテンツ・ディレクトリ)に配置する必要があります。

APPLICATION_ROOT/Portal/public_html/oracle/webcenter/siteresources/scopedMD/shared/

イメージは常に、ポータル・リソースのコンテンツ・ディレクトリとして設定されているディレクトリのサブディレクトリの下または中に直接配置する必要があります。コンテンツ・ディレクトリ・パスは、「ポータル・リソースの更新」ダイアログにあります。

競合を避けるために、イメージをsharedディレクトリの下のサブディレクトリ内に配置できます。たとえば、イメージをskins/imagesサブディレクトリに配置できます。この場合、新しい場所を指すようにコンテンツ・ディレクトリ・パスを更新する必要があります。

イメージを追加すると、次の例で示すように、CSSファイルでそれを参照できるようになります。

.AFBrandingBarLogo {
background-image:url('/oracle/webcenter/siteresources/scopedMD/shared/skins/images/image1.gif');}

詳細は、第14.2.1項「スキン作成に関する必要な知識」を参照してください。

14.4.3.2 スキンのエクスポート

次のような場合、スキンのエクスポートは必要となることがあります。

- デプロイしたアプリケーションからインポートして変更したスキンをコピーして戻します。

- 新規スキンをデプロイ済アプリケーションで公開します。

スキンをJDeveloperにエクスポートすると、スキンのCSSファイルとgeneric-site-resources.xmlファイルが含まれたEARファイルが作成されます。管理者権限のあるユーザーは、この後、リソース・マネージャを使用してこのEARファイルをデプロイしたアプリケーションにアップロードできます。スキンをアップロードすると、実行時に管理および適用できるようになります。

リソースのエクスポートの詳細な手順は、第16.4.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

14.4.4 JDeveloperでのスキンの作成および実行時における有効化

Frameworkアプリケーションをデプロイした後でも、設計時に新規スキンを作成して実行時に有効化できます。それには、次の手順を実行します。

1. JDeveloperでスキンを作成します。詳細は第14.2項「JDeveloperでのスキンの作成」を参照してください。

2. 「ポータル・リソースの作成」オプションを使用して、スキンをポータル・リソースとして追加します。詳細は第14.4.2項「スキンの実行時管理を有効にする方法」を参照してください。

3. JDeveloperでスキンをポータル・リソースとしてエクスポートします。詳細は、第16.4.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

4. リソース・マネージャを使用して、スキンをランタイム・アプリケーションにアップロードします。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリソースのアップロードに関する項を参照してください。

14.4.5 実行時にスキンを作成および管理する方法

Frameworkアプリケーションで実行時の管理を有効にすると、権限のあるユーザーはリソース・マネージャを使用して、新規スキンの作成、スキンの編集、ソース・コードの編集、セキュリティの設定、表示または非表示、属性の設定、スキンの削除、アップロードおよびダウンロードといったタスクを実行できます。

図14-5に、スキンの「編集」メニューが表示されたリソース・マネージャを示します。

図14-5 実行時のスキンの管理

「図14-5 実行時のスキンの管理」の説明

リソース・マネージャにアクセスする方法の詳細は、第16.3.2項「リソース・マネージャを実行時に使用する方法」を参照してください。デプロイ済Frameworkアプリケーションでスキンを使用する手順はSpacesアプリケーションの手順と同じです。実行時のスキンの作成および管理の一般的な情報は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のスキンの使用に関する項を参照してください。

14.5 スキンのWebCenter Portal: Frameworkアプリケーションへの適用

異なるスキンをFrameworkアプリケーションに適用することもできます。実行時管理が有効になっている場合、権限のあるユーザーは実行時にスキンを変更できます。

この項には次のサブセクションが含まれます:

- 第14.5.1項「設計時におけるスキンの適用」

- 第14.5.2項「実行時におけるスキンの適用」

14.5.1 設計時におけるスキンの適用

設計時に、ポータル・リソースとして作成された別のスキンに切り替えるには、adf-config.xmlファイルを直接編集します。adf-config.xmlで設定できる属性の詳細は、第14.10.1項「adf-config.xml」を参照してください。

ポータル・リソースとして作成されたスキンを設計時にFrameworkアプリケーションに適用するには:

1. JDeveloperで、アプリケーションのadf-config.xmlを開きます。
このファイルをアプリケーション・ナビゲータで見つけるには、「アプリケーション・リソース」→「ディスクリプタ」→「ADF META-INF」の順に開きます。

2. <portal:preferences>の下で、次のスキン・プロパティを検索します。

<portal:preference id="oracle.webcenter.portalapp.skin"
desc="Default Portal Skin" value="portal"
resourceType="Skin" display="true"/>

3. valueプロパティで、アプリケーションに適用するスキンのファミリ名を指定します。
値は、必要なスキンの「ポータル・リソースの作成」または「ポータル・リソースの更新」ダイアログのSkin Family属性で指定された値と同じである必要があります。

4. 必要に応じて、descプロパティで、適用するスキンの説明を指定します。

5. adf-config.xmlを保存します。

注意:

APPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/skins以外の場所で作成したスキンを適用する場合には、そのスキンをtrinidad-skins.xmlファイルに登録して、そのスキンを使用するようにアプリケーションを構成する必要があります。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のスタイルとスキンを使用した外観のカスタマイズに関する項の章を参照してください。

14.5.2 実行時におけるスキンの適用

リソースの実行時管理を有効にすると、必ずしもスキンを手動でアプリケーションに登録する必要はありません。実行時に目的のスキンをデプロイ済アプリケーションに適用できます。

実行時にデプロイ済Frameworkアプリケーションにスキンを適用するには:

1. アプリケーション管理者としてログオンし、WebCenter Portal管理コンソールにナビゲートします。

2. 「構成」タブをクリックします。

3. 「デフォルト・スキン」リストから、必要なスキンを選択します(図14-6)。

図14-6 実行時におけるスキンの適用

「図14-6 実行時におけるスキンの適用」の説明

14.6 Spacesのスキンを作成および管理する方法

WebCenter PortalのSpacesアプリケーションには、すぐに使用できる特定のデフォルト・スキンが備わっています。これらのデフォルトのスキンが要件に適さない場合には、Spaces内で独自のスキンを作成できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のスキンの使用に関する項の章を参照してください。

ただし、Spacesでは、必要とするすべての機能を備えたスキンを作成するためのコントロール機能がすべて提供されていない可能性があります。そのような場合は、JDeveloperで独自のスキンを作成してから、それをSpacesにアップロードできます。Spacesから既存のスキンをダウンロードして、それをJDeveloperで編集したり、いずれかのサンプル・スキンを起点として使用した後に、Spacesにアップロードして戻すこともできます。

WebCenter Portalには特別なJDeveloperワークスペース(DesignWebCenterSpaces.jws)が用意されており、スキンなどのリソースを開発してSpacesにアップロードする際に利用できます。第55章「JDeveloperを使用したSpacesアプリケーションの拡張」には、サンプルのワークスペースの場所、およびWebCenterSpacesResourcesプロジェクトを使用してカスタムのスキンやSpacesのその他のタイプのリソースを作成する方法が記載されています。

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

Frameworkアプリケーションにカスタム・スキンを使用する際のベスト・プラクティスとして、カスタム・スキンを個別共有ライブラリとしてデプロイする必要があります。これは、アプリケーションと同じスキンを使用してレンダリングするポートレットをFrameworkアプリケーションに使用させる場合に、特に重要です。

14.7.1 スキン共有について

WebCenter Portal: Frameworkには、様々なデフォルトのスキンが用意されています。すべてのWebCenter Portalスキン・アーティファクトは、共有ライブラリ(oracle.webcenter.skin)で使用できます。共有ライブラリはEARとしてパッケージ化されており、次のタイプのファイルがある複数のスキンJARが含まれています。

- .cssファイル: スキン・セレクタ・ファイル

- .png: イメージ・ファイル

- .js: javascriptファイル

- trinidad-skins.xml: スキン定義ファイル

デフォルトでは、oracle.webcenter.skin共有ライブラリは、すべてのFrameworkアプリケーションとポートレット・プロデューサ・アプリケーションによって参照されます。したがって、すべてのスキンはクラスパスを介して使用できます。Frameworkアプリケーションでポートレットを使用すると、ポートレットはアプリケーションに対して定義されたスキンを使用してレンダリングされます。そのため、スキン共有を実現するには、同一のスキンが共有ライブラリを介して、Frameworkアプリケーションとポートレット・プロデューサ・アプリケーションの両方でアクセス可能である必要があります。

ただし、Frameworkアプリケーションでportal-skin.cssを変更した場合がある可能性があります。したがって、共有ライブラリで使用可能なスキンは、Frameworkアプリケーションで使用可能な更新バージョンと同じではありません。Frameworkアプリケーションのスキンのバージョンが共有ライブラリのスキンと同一ではない場合、FrameworkアプリケーションとPortlet Producerアプリケーション間のスキンの共有が失敗します。これは、Frameworkアプリケーションが変更済スキンを使用する場合に、Portlet producerが共有ライブラリでパッケージ化された元のバージョンのスキンにしかアクセスできないためです。Frameworkアプリケーションでは、最新のスキンの変更でレンダリングします。一方、同じアプリケーション内のポートレットでは、共有ライブラリから元のスキンでレンダリングします。この動作はスキンのコーディネーションと呼ばれます。

デフォルトのスキンを使用せずに、Frameworkアプリケーション内でポータル・リソースとして新規カスタム・スキンを作成したり、一意のスキン・ファミリIDでスキンをtrinidad-skins.xmlに定義する場合があります。アプリケーションでポートレットが使用される場合、ポートレット・プロデューサは共有ライブラリでカスタム・スキンを検出できません。これによりスキンの不一致エラーが発生し、ポートレットはFrameworkアプリケーションで使用されるカスタム・スキンではなく、必要最小限の単純なスキンでレンダリングします。

そのため、Frameworkアプリケーションでスキンを変更したりカスタム・スキンを作成するたびに、その新規スキンや変更済スキンを共有ライブラリとしてデプロイする必要があります。

14.7.2 個別共有ライブラリとしてのスキンのデプロイ方法

共有ライブラリとしてスキンをデプロイするには:

1. trinidad-skins.xmlのコピーが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. 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. Frameworkアプリケーションとポートレット・プロデューサ・アプリケーションの両方を再デプロイします。
これでカスタム・スキンをこのアプリケーション間で共有できます。

注意:

カスタム・スキン共有ライブラリはデプロイする必要があり、実際のスキン共有が実現されるには、WebLogic Serverコンソールで「アクティブ」と表示されている必要があります。共有ライブラリJARになんらかの問題がある場合(不適切なマニフェスト、不正なバージョンなど)、デプロイ済共有ライブラリはWebLogic Serverコンソールで「アクティブ」とは表示されません。

注意:

複数のスキン・ファイルがある場合、すべてのスキン・アーティファクトを1つの共有ライブラリJARに格納して、2つのtrinidad-skins.xmlファイルを1つのファイルに統合できます。この共有ライブラリはすべてのカスタム・スキン開発で引き続き使用できます。

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

実際のアプリケーション・ロジックに影響を与えずに、ユーザー、ページ、アプリケーションなどに対して、それぞれ異なるスキンを割り当てることができます。スキンを条件付で設定するには、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

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

この項では、スキンの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

問題

アプリケーションで、設計時に加えたスキンの変更内容が反映されません。

解決方法

開発時にスキンを変更した後、サーバーを再起動せずに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>

14.10 スキン関連のファイル

この項は、次の各項で構成されています。これらの項では、スキンを作成または変更する際に作成または変更されるファイルについて説明します。

- 第14.10.1項「adf-config.xml」

- 第14.10.2項「trinidad-config.xml」

- 第14.10.3項「trinidad-skins.xml」

14.10.1 adf-config.xml

Frameworkアプリケーションの参照メカニズムを利用できます。また、adf-config.xmlで、実行時に使用されるスキンの参照を定義するためのビルトイン・サポートがあります。このファイルはMETA-INFディレクトリにあります。例14-1は、adf-config.xmlで使用可能なデフォルトのスキン・プリファレンスを示しています。

例14-1 adf-config.xmlのスキン・プリファレンス

<portal:preference id="oracle.webcenter.portalapp.skin"
desc="Default Portal Skin" value="portal"
resourceType="Skin" display="true"/>

adf-config.xmlで、スキンに次のプロパティを定義できます。

- preference id - アプリケーションで使用されるスキンのプリファレンス値を検索するキーとして、ポータル・プリファレンスAPIで使用されるハードコードされた値。

- desc - スキンの説明。実行時に、この値がスキンの表示名として表示されます。

- value - アプリケーションで使用されるスキンのファミリ名。値は、必要なスキンの「ポータル・リソースの作成」または「ポータル・リソースの更新」ダイアログのSkin Family属性で指定された値と同じである必要があります。アプリケーションで異なるスキンを使用する場合、ここで必要なスキン・ファミリ名を指定します。

- resourceType - リソースのタイプ(ここではスキン)。

- display - スキンのリストを実行時にスキン・ピッカーに表示するかどうかを指定します。

14.10.2 trinidad-config.xml

JDeveloperでは、Frameworkアプリケーションを作成する場合、初期trinidad-config.xmlファイルが/WEB-INFディレクトリに自動的に作成されます。例14-2に、初期trinidad-config.xmlファイルを示します。

例14-2 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}です。デフォルト値を変更すると、アプリケーション・ユーザーは実行時にリソース・マネージャでスキンを設定できません。

14.10.3 trinidad-skins.xml

trinidad-skins.xmlファイルは、JARとして提供されるどのスキンにも必要です。このファイルは、通常、各スキンJARとバンドルされていて、スキンIDとスキンの実際のパスの間の検索を実行します。ただし、Frameworkアプリケーションのポータル・リソースとして作成されるスキンでは、個々の実行時APIを使用してスキンの場所が検索されます。したがって、このファイルはそのようなスキンには必要ありません。

trinidad-skins.xmlの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のスタイルとスキンを使用した外観のカスタマイズに関する項の章を参照してください。

15 リソース・カタログの作成と管理

リソース・カタログでは、ページ、ページ・テンプレートまたはタスク・フローに含められるリソースを定義し、編成します。リソース・カタログは、JDeveloperで作成できるため、アプリケーションでデプロイされます。また、リソース・カタログを実行時リソース・マネージャで作成および編集することもできます。この章では、デフォルトのリソース・カタログについて述べ、JDeveloperでこのカタログをカスタマイズしたり、新規カタログを作成する方法について説明します。

実行時のリソース・カタログ管理の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリソース・カタログの使用に関する項を参照してください。

この章には次の項が含まれます:

- 第15.1項「リソース・カタログの概要」

- 第15.2項「カスタム・リソース・カタログの作成」

- 第15.3項「リソース・カタログの管理および実行時管理の有効化」

- 第15.4項「リソース・カタログのアイテムのフィルタリング」

- 第15.5項「複数のリソース・カタログの構成」

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

リソース・カタログ(Oracle Business Dictionaryとも呼ばれる)を使用すると、統合された検索および参照のユーザー・インタフェースで、本来なら関連性のない1つ以上のリポジトリのコンテンツのビューが統合されます。リソースはソース・リポジトリで生成され、図15-1.に示すようにリソース・カタログから公開されます。

図15-1 リソース・カタログの概要

「図15-1 リソース・カタログの概要」の説明

JDeveloperを使用すると、2タイプのリソース・カタログ(設計時リソース・カタログと実行時リソース・カタログ)が表示されます。

設計時リソース・カタログはリソース・パレットで使用でき、開発者向けのお気に入りリストのようなものです。WebCenter Portal - サービス・カタログは、WebCenter Portal拡張機能バンドルをインストールするとそのまま使用可能な設計時のカタログです。このカタログに含まれるタスク・フローとデータ・コントロールをFrameworkアプリケーションに追加できます。WebCenter Portal - サービス・カタログの他に、接続を定義してカタログを作成し、それらの接続で公開されるリソースを編成できます。そのようなリソースは、開発中のどのアプリケーションでも再利用できます。

関連項目:

- 第3.2項「WebCenter PortalのOracle JDeveloper用拡張機能のインストール」

- リソース・パレットおよびカタログの詳細は、Oracle JDeveloperオンライン・ヘルプを参照してください。
この情報をOracle JDeveloperで検索するには、「ヘルプ」メニューから「目次」を選択します。「ヘルプ・センター」で、「JDeveloperの基本」を開き、「リソース・パレットでの作業」を選択します。

実行時リソース・カタログは、ページまたはページ・テンプレート、およびタスク・フローをデプロイ済SpacesアプリケーションおよびFrameworkアプリケーションに移入する際に使用できます。Spacesアプリケーションのリソース・カタログでは、「コンポーザ」にページとタスク・フローを移入する際に使用できるリソースを特定します。これに加え、Frameworkアプリケーションのリソース・カタログでは、リソース・マネージャでページ・テンプレートやその他のリソース・カタログを作成する際に使用できるリソースも特定します。

関連項目:

- 第19.1項「コンポーザ・コンポーネントを使用した編集可能ページの設計」

- 第11.2項「ページ・テンプレートの使用」

デフォルトのリソース・カタログの構成

Page Customizableコンポーネントをページに追加すると、カタログ定義ファイル(default-catalog.xml)を持つデフォルトのリソース・カタログがアプリケーションで構成されます。作成したアプリケーションのタイプに応じて、カタログ定義ファイルは次のいずれかのフォルダで作成されます。

- Frameworkアプリケーションでは、default-catalog.xmlファイルはAPPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/catalogsディレクトリに格納されています。この場合のリソース・カタログには、図15-2のようなフォルダが含まれています。

図15-2 デフォルトのリソース・カタログ

「図15-2 デフォルトのリソース・カタログ」の説明

- ポータル以外のWebCenterアプリケーションでは、default-catalog.xmlファイルはAPPLICATION_ROOT/Portal/src/portalディレクトリに格納されています。この場合、リソース・カタログにはADF Faces Componentsフォルダがあり、そこにはユーザーがページを追加できるADF Facesコンポーネントが含まれています。
アプリケーションにポートレット・プロデューサを登録している場合には、リソース・カタログの「ポートレット」フォルダにそのプロデューサのポートレットが表示されます。プロデューサを登録していない場合、「ポートレット」フォルダは非表示になります。

カスタム・カタログを作成したりデフォルトのカタログを変更し、ビジネス関連のコンポーネントを含めることができます。詳細は、第15.2項「カスタム・リソース・カタログの作成」および第15.2.3項「リソース・カタログのコンテンツの管理方法」を参照してください。

15.2 カスタム・リソース・カタログの作成

ほとんどのビジネスでは、ユーザーとグループが自分でページに追加できるリソースにのみアクセスできるようにすることが要求されます。このニーズに対応するために、アプリケーションでは複数のリソース・カタログを構成できます。複数のリソース・カタログを構成するには、最初にすべての必要なリソースを使用してカスタム・カタログを作成する必要があります。

この項では、カスタム・リソース・カタログの作成方法を説明します。次のサブセクションが含まれます:

- 第15.2.1項「カスタム・リソース・カタログの作成方法」

- 第15.2.2項「リソースへの接続の定義方法」

- 第15.2.3項「リソース・カタログのコンテンツの管理方法」

- 第15.2.4項「設計時に作成されたデータ・コントロールの公開方法」

- 第15.2.5項「実行時に作成されたデータ・コントロールの公開方法」

- 第15.2.6項「リソース・カタログのポートレット可視性の制御方法」

- 第15.2.7項「アプリケーションまたはページ用のデフォルト・リソース・カタログの構成方法」

- 第15.2.8項「リソース・カタログの定義時の必知事項」

- 第15.2.9項「タスク・フロー・パラメータおよびタスク・フローを囲んでいるShow Detail Frameの属性の定義方法」

15.2.1 カスタム・リソース・カタログの作成方法

「新規ギャラリ」ダイアログには、リソース・カタログを作成するためのオプションが表示されます。このオプションを使用すると、空白のカタログを作成し、それに選択したリソースを移入できます。

カタログ定義を作成するには:

1. Oracle JDeveloperでアプリケーションを開きます。

2. ポータル・プロジェクトを選択し、「ファイル」メニューから、「新規」を選択します。

3. 「新規ギャラリ」ダイアログで、「Web層」を開き、「ポータル」、「アプリケーション・リソース・カタログ」の順に選択して、「OK」をクリックします。

4. 「アプリケーション・リソース・カタログ」ダイアログの「ファイル名」フィールドに、users-catalog.xmlなどのカタログ名を入力します。

5. 「ディレクトリ」フィールドで、新しいカタログ定義XMLファイルの場所を指定します。
カタログ定義ファイルは、リソース・カタログのルート・ディレクトリかルートのサブディレクトリに保存する必要があります。Frameworkアプリケーションのデフォルトのルート・ディレクトリはAPPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/catalogs、Framework以外のアプリケーションではAPPLICATION_ROOT/Portal/src/portalとなります。

注意:

Frameworkアプリケーションにおいて、実行時リソース・マネージャで新規カタログを公開するには、カタログをAPPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalappディレクトリに作成する必要があります。

たとえば、リソース・カタログのルートが次の場合:

C:\JDeveloper\mywork\RCSampleApp\Portal\public_html\oracle\webcenter\portalapp\catalogs

ここにカタログを作成することも、サブディレクトリを作成することも可能です。例:

C:\JDeveloper\mywork\RCSampleApp\Portal\public_html\oracle\webcenter\portalapp\catalogs\mycatalogs

6. 「ポータル・リソースとして作成」オプションを選択して、リソース・マネージャにカタログを公開します。

注意:

ディレクトリをAPPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalappまたはportalappのサブディレクトリに指定した場合、Frameworkアプリケーションでこのオプションが表示されます。

7. 「OK」をクリックします。
この新規カタログ定義ファイルが概要エディタで開きます。

8. 概要エディタの右側で、次のようにカタログ・プロパティを定義します。

- 「カタログ・フィルタ」フィールドで、カタログに適用するフィルタ名を指定します。このフィールドはオプションです。詳細は、第15.4項「リソース・カタログのアイテムのフィルタリング」を参照してください。

- 「参照可能」フィールドで、リソース・カタログを表示する必要があるかどうかを指定します。この属性は、EL値を取ります。デフォルト値は#{true}で、これはカタログが常にすべてのユーザーに表示されることを意味します。

- 「カタログ属性」セクションを使用して、カタログの次の属性を定義します。

- タイトル: カタログの表示名。

- 説明: カタログの簡単な説明。このテキストは、リソース・マネージャのカタログ名の下に表示されます。

- 件名: リソース・カタログのキーワード検索を容易にするキーワード。

- アイコンURI: リソース・マネージャのカタログ名の横に表示するアイコンのURIを指定します。

- ツールチップ: カタログ名の上にマウスを置いたときに表示されるツール・チップを指定します。

注意:

カタログの属性は、カタログ定義XMLファイルの<schema>要素内で定義されます。即時利用可能な属性の他に、カタログでカスタム属性を公開するには、<schema>要素内でこれらを定義します。

9. カタログ定義ファイルを保存します。

これで、カタログにリソースを移入できます。様々なタイプのリソースの追加の詳細は、第15.2.3項「リソース・カタログのコンテンツの管理方法」を参照してください。

ヒント:

リソースを最初から作成して追加したくない場合には、開始点としてdefault-catalog.xmlのコンテンツを新規カタログ定義にコピーすることも可能です。

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

WebCenter Portalサービス、ポートレットなど多くのリソースへは、アプリケーションのconnections.xmlファイルで定義された接続を経由してアクセスします。そのため、リソース・カタログへそのようなリソースを追加するには、事前に接続を作成する必要があります。

様々な方法でリソースへの接続を作成できます。この項では、「リソース・パレット」から接続を作成する方法を説明します。追加の接続の作成方法の詳細は、第7.2項「サービスを利用するためのFrameworkアプリケーションの準備」および第62章「ポートレットの消費」を参照してください。

「リソース・パレット」から接続を作成するには:

1. 「リソース・パレット」で、左上隅の「新規」アイコンをクリックします。

2. 「接続の作成」および作成する接続のタイプを選択します。
接続タイプのウィザードが表示されます。

3. 接続に関する必要な情報を入力してウィザードを続行します。
「終了」をクリックすると、「リソース・パレット」の「接続」の下に接続が表示されます。

4. 「リソース・パレット」で接続を右クリックし、ポップアップ・メニューから「アプリケーションに追加」を選択します。
または、アプリケーション・ナビゲータの「アプリケーション・リソース」パネルに、「リソース・パレット」から接続をドラッグ・アンド・ドロップすることもできます。

15.2.3 リソース・カタログのコンテンツの管理方法

カタログ・リソースは、ビジネス要件に応じて追加または削除できます。

ヒント:

リソース・カタログを最初から作成する場合には、デフォルトのカタログ定義ファイルを参照して、カタログ内にリソースを含める方法についてヒントを得ることができます。

通常、カタログ定義ファイルはAPPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/catalogsディレクトリにあります。カタログ定義ファイルの「デザイン」ビュー(図15-3)には、カタログ・コンテンツの追加、変更および削除のオプションが表示されます。

図15-3 カタログ定義ファイルの「デザイン」ビュー

「図15-3 カタログ定義ファイルの「デザイン」ビュー」の説明

リソースをカタログに追加するには、次の2つの方法があります。

- リソース・カタログの「概要エディタ」にある「追加」メニューのオプションを使用します。

- リソースをIDEの別の領域からカタログ定義ファイルにドラッグ・アンド・ドロップします。

XMLエディタの左側には「カタログ」セクションがあり、カタログのコンポーネントの階層構造が表示されます。そのページの右側には、選択済リソースの属性とパラメータを定義するフィールドが表示されます。

注意:

コンポーザのスタンドアロン・バージョン(WebCenter Portal: Frameworkを使用しないコンポーザ)を使用する場合、リソースをカタログに追加するには、<resource>要素を直接カタログ定義ファイルのソースに追加します。詳細は、第C.3.12項「resource」を参照してください。

関連項目:

カタログ定義ファイルとその属性は次の項を参照してください。

- 第C.2項「XMLスキーマ」

- 第C.3項「カタログ定義の属性」

この項では、カタログ・リソースの管理方法を説明します。次の項が含まれます:

- 第15.2.3.1項「フォルダの追加」

- 第15.2.3.2項「リンクの追加」

- 第15.2.3.3項「リソース・カタログの追加」

- 第15.2.3.4項「コンポーネントの追加」

- 第15.2.3.5項「カスタム・フォルダの追加」

- 第15.2.3.6項「カスタム・コンテンツ・プロバイダの追加」

- 第15.2.3.7項「リソースのカタログへのドラッグ・アンド・ドロップ」

- 第15.2.3.8項「リソースの編集」

- 第15.2.3.9項「リソースの削除」

- 第15.2.3.10項「カタログ内のリソースの再配置」

15.2.3.1 フォルダの追加

フォルダを作成し、類似リソースをグループ化できます。その結果、カタログの編成が改善されます。

フォルダを追加するには:

1. JDeveloperでカタログ定義ファイルを開きます。
通常、このファイルはAPPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/catalogsディレクトリにあります。

2. 「カタログ」セクションの「追加」メニューから、「フォルダ」を選択します。
folder要素がカタログに追加されます。ページの右側には、新しいフォルダの属性とパラメータを定義するフィールドが表示されます。

3. Idフィールドには、デフォルトでfolderという値が入っています。別の値を指定できますが、IDはカタログ定義ファイル内で一意である必要があります。

4. Visibleフィールドには、このフォルダを条件付きで特定のユーザーまたはグループに表示するためのEL値を指定できます。この属性は、EL値を取ります。デフォルト値は#{true}で、これはリソースが常にすべてのカタログで表示されることを意味します。

5. 必要に応じて、「フォルダ属性」セクションで、「追加」メニューから次の属性を選択して定義できます(図15-4参照)。

図15-4 フォルダの属性

- タイトル: カタログ内のリソースに使用されるラベル。この属性はデフォルトで定義されています。この値は必要に応じて変更できます。

- 説明: このリソースの説明。

- 件名: リソース・カタログのキーワード検索を容易にするキーワード。

- ツールチップ: カタログのこのリソース名の上にマウスを置くと表示されるツールチップ。

- アイコンURI: カタログ内のリソース名の隣に表示されるアイコン。

「追加」メニューでオプションを選択すると、「フォルダ属性」表に新しい行が作成されます。この行を使用して、新しい属性の名前、タイプおよび値を指定できます。

15.2.3.2 リンクの追加

次のタイプのリンクをカタログに追加できます。

- タスク・フロー: WebCenter Portalサービス・タスク・フロー(リソース・パレット内)、またはOracle JDeveloperで作成したカスタム・タスク・フロー(アプリケーション・ナビゲータ内)へのリンク。

- ポートレット: 登録済のポートレット・プロデューサへのリンク。ポートレット・プロデューサの登録およびページへのポートレット追加の詳細は、第62章「ポートレットの消費」を参照してください。

- コンテンツ: 既存のコンテンツ・リポジトリ接続からファイルまたはディレクトリへのリンク。

- その他: カスタム・コンポーネント(そのコンポーネントのXMLコードを提供することで作成します)へのリンク。

リンクを追加するには:

1. 「カタログ」セクションの「追加」メニューから、「リンク」を選択します。
url要素がカタログに追加されます。ページの右側には、新しいリンクの属性とパラメータを定義するフィールドが表示されます。

2. Idフィールドには、デフォルトでurlという値が入っています。別の値を指定できますが、IDはカタログ定義ファイル内で一意である必要があります。

3. 「タイプ」リスト(図15-5)から、作成するリソースのタイプを選択します。Taskflow、Portlet、ContentおよびOtherから選択できます。

図15-5 リンクのタイプ

注意:

- タスク・フローとポートレットをカタログに追加するには、「リソース・パレット」ペインか「アプリケーション・リソース」ペインから、カタログ定義ファイルの「デザイン」ビューの「カタログ」セクションにドラッグ・アンド・ドロップしても実行できます。関連付けられた属性は、リソースがカタログに追加されると自動的に移入されます。第15.2.3.7項「リソースのカタログへのドラッグ・アンド・ドロップ」を参照してください。

- ADFタスク・フローをカタログに追加してあり、カタログをデプロイ済のアプリケーションにエクスポートする場合には、タスク・フローを共有ライブラリとしてデプロイ済アプリケーションにデプロイする必要があります。詳細は、第12.3項「ポータルへのカスタム・タスク・フローの追加」を参照してください。

4. カスタム・リソースを追加する場合には、コンポーネントのファクトリ・クラスを指定します。その他のすべてのリソース・タイプには、タイプを選択した時点でFactory Class値が移入されます。
使用可能なリソース・タイプのファクトリ・クラスは、次のとおりです。

- タスク・フロー: oracle.webcenter.portalframework.sitestructure.rc.TaskFlowResourceFactory

- ポートレット: oracle.webcenter.portalframework.sitestructure.rc.PortletResourceFactory

- コンテンツ: oracle.webcenter.content.model.rc.ContentUrlResourceFactory

詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

5. 「URL」フィールドに、リソースにアクセスするためのURLを指定します。表15-1に、各リソース・タイプに使用されるURLの形式を示します。

表15-1 様々なリソース・タイプのURLの形式

リソース・タイプ

アプリケーション内での場所

URL形式

ADFライブラリからのタスク・フロー

リソース・パレット

taskflow://Path_to_Task_Flow/Task_Flow_Definition_File_Name#Task_Flow_ID

アプリケーション内のタスク・フロー

アプリケーション・ナビゲータ

taskflow://Path_to_Task_Flow/Task_Flow_Definition_File_Name#Task_Flow_ID

ポートレット

「アプリケーション・リソース」ペインまたは「リソース・パレット」内のポートレット・プロデューサ接続

portlet://Producer_ID/Portlet_ID

コンテンツ

「アプリケーション・リソース」ペイン内の「コンテンツ・リポジトリ」接続

content://Content_Connection_ID/Document_ID

「URL」フィールドの隣にある「参照」アイコンをクリックして、「リソースの選択」を開きます。ここで、アプリケーションまたはリソース・パレットから選択したタイプのリソースを追加できます。

注意:

ポートレットまたはコンテンツ・タイプのリソースのURLを手動で入力した場合に、そのリソースの接続をリソース・パレット内のみで使用できるようにするには、まずそのアプリケーションへの接続を追加します。

6. Visibleフィールドで、値をtrueまたはfalseに指定するか、このリンクを条件付きで特定のユーザーまたはグループに表示するためのEL値を指定できます。デフォルト値は#{true}で、これはリソースが常にすべてのカタログで表示されることを意味します。

7. 必要に応じて、「URL属性」セクションで、「追加」メニューから次の属性を選択して定義できます。

- タイトル: カタログ内のリソースに使用されるラベル。この属性はデフォルトで定義されています。この値は必要に応じて変更できます。

- 説明: このリソースの説明。

- 件名: リソース・カタログのキーワード検索を容易にするキーワード。

- ツールチップ: カタログのこのリソース名の上にマウスを置くと表示されるツールチップ。

- アイコンURI: カタログ内のリソース名の隣に表示されるアイコン。

「追加」メニューでオプションを選択すると、「フォルダ属性」表に新しい行が作成されます。この行を使用して、新しい属性の名前、タイプおよび値を指定できます。

8. 「URLパラメータ」セクションを使用して、リソースのパラメータを定義します。これらのパラメータは、アプリケーションのその他のアーティファクトにバインドできます。「追加」アイコンをクリックして、「パラメータ」表に新しい行を作成します。

15.2.3.3 リソース・カタログの追加

選択したカタログ内に別のリソース・カタログを含めることができます。別のカタログを追加する際には、このカタログへのポインタのみがカタログ定義ファイルに追加されます。実際のカタログ・コンテンツは、実行時にのみ挿入されます。

リソース・カタログを追加するには:

1. 「カタログ」セクションの「追加」メニューから、「カタログ参照」を選択します。
catalogというタイトルの新しいノードがカタログに追加されます。ページの右側には、新しいフォルダの属性とパラメータを定義するフィールドが表示されます。

2. Idフィールドには、デフォルトでcatalogという値が入っています。別の値を指定できますが、IDはカタログ定義ファイル内で一意である必要があります。

3. 「パス」フィールドで、MDSパスをカタログ定義ファイルに指定します(たとえば、\oracle\webcenter\portalapp\catalogs\custom-catalog.xml)。
「参照」アイコンを使用し、アプリケーション・フォルダを参照してカタログ定義ファイルを選択します。

4. Visibleフィールドには、このカタログを条件付きで特定のユーザーまたはグループに表示するためのEL値を指定できます。この属性は、EL値を取ります。デフォルト値は#{true}で、これはこのリソースが常にすべてのカタログで表示されることを意味します。

5. 必要に応じて、「カタログ属性」セクションで、「追加」メニューから次の属性を選択して定義できます。

- タイトル: カタログ内のリソースに使用されるラベル。この属性はデフォルトで定義されています。この値は必要に応じて変更できます。

- 説明: このリソースの説明。

- 件名: リソース・カタログのキーワード検索を容易にするキーワード。

- ツールチップ: カタログのこのリソース名の上にマウスを置くと表示されるツールチップ。

- アイコンURI: カタログ内のリソース名の隣に表示されるアイコン。

「追加」メニューでオプションを選択すると、「カタログ属性」表に新しい行が作成されます。この行を使用して、新しい属性の名前、タイプおよび値を指定できます。

15.2.3.4 コンポーネントの追加

カタログにカスタム・コンポーネントを追加できます。単一のADF Facesコンポーネント、2つ以上のコンポーネントを含む複合オブジェクト、内部に任意のHTMLコンテンツを追加できるJSF Verbatimタグなど、様々なコンポーネントを追加できます。カタログに追加可能な任意のHTMLの例は、YouTubeビデオです。

カスタム・コンポーネントを追加するには:

1. 「カタログ」セクションの「追加」メニューから、「コンポーネント」を選択します。
component要素がカタログに追加されます。ページの右側には、コンポーネントの属性とパラメータを定義するフィールドが表示されます。

2. Idフィールドには、デフォルトでcomponentという値が入っています。別の値を指定できますが、IDはカタログ定義ファイル内で一意である必要があります。

3. 「コンポーネント・ファクトリ」フィールドに、oracle.adf.rc.component.XmlComponentFactoryなど、oracle.adf.rc.component.ComponentFactoryインタフェースを実装し、一連のパラメータに基づいてコンポーネントのインスタンスを作成するJavaクラスの名前を指定します。
名前を入力すると、クラスパスから有効なファクトリ・クラスがフィールドに自動的に入力されます。「参照」アイコンを使用しても、クラスを選択できます。

詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

4. Visibleフィールドには、このコンポーネントを条件付きで特定のユーザーまたはグループに表示するためのEL値を指定できます。この属性は、EL値を取ります。デフォルト値は#{true}で、これはこのリソースが常にすべてのカタログで表示されることを意味します。

5. 必要に応じて、「コンポーネント属性」セクションで、「追加」メニューから次の属性を選択して定義できます。

- タイトル: カタログ内のリソースに使用されるラベル。この属性はデフォルトで定義されています。この値は必要に応じて変更できます。

- 説明: このリソースの説明。

- 件名: リソース・カタログのキーワード検索を容易にするキーワード。

- ツールチップ: カタログのこのリソース名の上にマウスを置くと表示されるツールチップ。

- アイコンURI: カタログ内のリソース名の隣に表示されるアイコン。

「追加」メニューでオプションを選択すると、「カタログ属性」表に新しい行が作成されます。この行を使用して、新しい属性の名前、タイプおよび値を指定できます。

6. 「コンポーネント・パラメータ」セクションを使用して、ファクトリ・クラスを実装する際に定義されたパラメータを追加します。
たとえば、XMLコンポーネントを追加する場合、「パラメータ」セクションで「追加」アイコンをクリックし、「xml」を選択します。表示される新しい行で、「値」フィールドにコンポーネントのXMLコードを指定します。

注意:

xmlオプションは、oracle.adf.rc.component.XmlComponentFactoryをコンポーネント・ファクトリとして選択している場合にのみ表示されます。

コンポーネントを正しく機能させるには、次の例のように、カスタム・コンポーネントIDが#になるように指定し、ネームスペースを指定する必要があります。

<cust:panelCustomizable id="#" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"/>

#という値により、コンポーネントに対し、動的に一意のIDが生成されます。

15.2.3.5 カスタム・フォルダの追加

フォルダが動的に移入されるように、リソース・カタログ・アダプタを使用してフォルダを追加できます。カスタム・フォルダは、カタログへのリソースを含むフォルダとして追加されません。カスタム・フォルダにはリソースを動的に表示する、ファクトリ・クラスへの参照のみが含まれます。

カスタム・フォルダを追加するには:

1. 「カタログ」セクションの「追加」メニューから、「カスタム・フォルダ」を選択します。
customFolder要素がカタログに追加されます。ページの右側には、フォルダの属性とパラメータを定義するフィールドが表示されます。

2. Idフィールドには、デフォルトでcustomFolderという値が入っています。別の値を指定できますが、IDはカタログ定義ファイル内で一意である必要があります。

3. 「初期コンテキスト・ファクトリ」フィールドで、javax.naming.InitialContextFactoryインタフェースを実装して一連のパラメータに基づいてフォルダを生成するJavaクラスの名前を指定します。
詳細は、第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」を参照してください。

4. Visibleフィールドには、このフォルダを条件付きで特定のユーザーまたはグループに表示するためのEL値を指定できます。この属性は、EL値を取ります。デフォルト値は#{true}で、これはこのリソースが常にすべてのカタログで表示されることを意味します。

5. 「フォルダの内容の挿入」を選択し、カスタム・フォルダの内容をフォルダの下に表示するのではなく、カタログに直接表示します。

6. 必要に応じて、「カスタム・フォルダ属性」セクションで、「追加」メニューから次の属性を選択して定義できます。

- タイトル: カタログ内のリソースに使用されるラベル。この属性はデフォルトで定義されています。この値は必要に応じて変更できます。

- 説明: このリソースの説明。

- 件名: リソース・カタログのキーワード検索を容易にするキーワード。

- ツールチップ: カタログのこのリソース名の上にマウスを置くと表示されるツールチップ。

- アイコンURI: カタログ内のリソース名の隣に表示されるアイコン。

「追加」メニューでオプションを選択すると、「カタログ属性」表に新しい行が作成されます。この行を使用して、新しい属性の名前、タイプおよび値を指定できます。

7. 「カスタム・フォルダ・パラメータ」セクションに、ファクトリ・クラスを実装する際に定義したパラメータを追加します。これらのパラメータは、アプリケーションのその他のアーティファクトにバインドできます。「パラメータ」セクションで「追加」アイコンをクリックし、「パラメータ」表に新しい行を作成します。
ファクトリ・クラスがパラメータを公開している場合、「追加」アイコンのドロップダウン・メニューが表示される場合があります。たとえば、コンテンツ・プレゼンタ固有のファクトリ・クラスでは、templateViewパラメータが表示されます。

15.2.3.6 カスタム・コンテンツ・プロバイダの追加

カスタム・コンテンツ・プロバイダは、実行時に0以上のカタログ・エントリを動的に生成します。カタログ・エントリには、フォルダ、リンク、カスタム・フォルダ、コンポーネントなどが含まれます。カスタム・フォルダを追加すると、フォルダがカタログ内に作成され、空の場合でも実行時に表示されます。ただし、カスタム・コンテンツ要素を追加した場合には、フォルダはカタログ内に作成されますが、コンポーネントが含まれている場合にのみ実行時に表示されます。この違いを除いては、カスタム・コンテンツ・プロバイダはカスタム・フォルダと同じです。

カスタム・コンテンツ・プロバイダを追加するには:

1. 「カタログ」セクションの「追加」メニューから、「カスタム・コンテンツ」を選択します。
customContent要素がカタログに追加されます。ページの右側には、フォルダの属性とパラメータを定義するフィールドが表示されます。

2. Idフィールドには、デフォルトでcustomFolderという値が入っています。別の値を指定できますが、IDはカタログ定義ファイル内で一意である必要があります。

3. 「コンテンツ・プロバイダ」フィールドで、oracle.adf.rc.spi.plugin.catalog.CustomContentProviderV2インタフェースを実装するクラスの完全修飾名を指定します。
「参照」アイコンを使用して、このインタフェースを実装するクラスのリストを表示できます。第C.4項「カタログへの動的リソースの追加に使用可能なファクトリ・クラス」も参照してください。

4. Visibleフィールドには、このフォルダを条件付きで特定のユーザーまたはグループに表示するためのEL値を指定できます。この属性は、EL値を取ります。デフォルト値は#{true}で、これはこのリソースが常にすべてのカタログで表示されることを意味します。

5. 必要に応じて、「コンポーネント属性」セクションで、「追加」メニューから次の属性を選択して定義できます。

- タイトル: カタログ内のリソースに使用されるラベル。この属性はデフォルトで定義されています。この値は必要に応じて変更できます。

- 説明: このリソースの説明。

- 件名: リソース・カタログのキーワード検索を容易にするキーワード。

- ツールチップ: カタログのこのリソース名の上にマウスを置くと表示されるツールチップ。

- アイコンURI: カタログ内のリソース名の隣に表示されるアイコン。

「追加」メニューでオプションを選択すると、「カタログ属性」表に新しい行が作成されます。この行を使用して、新しい属性の名前、タイプおよび値を指定できます。

6. 「カスタム・コンテンツ・パラメータ」セクションで、フォルダ上のパラメータを定義します。ここで定義するパラメータは、CustomContentProviderV2実装に渡され、この実装により解釈されます。「パラメータ」セクションで「追加」アイコンをクリックし、「パラメータ」表に新しい行を作成します。

15.2.3.7 リソースのカタログへのドラッグ・アンド・ドロップ

前項で説明したリソース以外に、次のリソースをカタログ定義ファイルで選択したフォルダにドラッグ・アンド・ドロップして追加できます。

- ポートレット: 「アプリケーション・リソース」ペインまたは「リソース・パレット」から

- Oracle WebCenter ContentのOracle WebCenter Portalコンテンツ・サービスからのコンテンツ: 「アプリケーション・リソース」ペインまたは「リソース・パレット」から

- タスク・フロー: 「アプリケーション・リソース」ペインまたは「リソース・パレット」から

注意:

ADFタスク・フローをカタログに追加し、カタログをデプロイ済のアプリケーションにエクスポートする場合には、このタスク・フローを共有ライブラリとしてデプロイ済アプリケーションにデプロイする必要があります。

詳細は、第12.3項「ポータルへのカスタム・タスク・フローの追加」を参照してください。

- 別のカタログ定義ファイル: 「アプリケーション・ナビゲータ」から

15.2.3.8 リソースの編集

リソースを編集するには、カタログ定義ファイルの「カタログ」セクションでリソースを選択します。リソースの属性とパラメータは、ページの右側に表示されます。これらの属性とパラメータの値を編集して、カタログ定義ファイルを保存できます。リソースの属性とパラメータの詳細は、カタログへのそのリソースの追加に関する項を参照してください。

15.2.3.9 リソースの削除

リソースを削除するには、カタログ定義ファイルの「カタログ」セクションでリソースを選択し、図15-6に示す「選択したノードを削除します」アイコンをクリックします。

図15-6 リソース・カタログの「削除」オプション

15.2.3.10 カタログ内のリソースの再配置

カタログ内のリソース編成の際、リソースを階層内の別のフォルダに移動できます。リソースを再配置する方法は次のとおりです。

- あるフォルダから別のフォルダにドラッグ・アンド・ドロップします。

- 「親の変更」ポップアップ・メニューのオプションを使用して、リソースを別のフォルダに移動します。

「親の変更」オプションを使用してリソースを再配置するには:

1. カタログ定義ファイルの「カタログ」セクションでリソースを右クリックし、ポップアップ・メニューから「親の変更」を選択します。

2. 「親の変更」ダイアログ(図15-7)で、リソースを含めるフォルダを選択します。

図15-7 「親の変更」ダイアログ

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

注意:

「OK」ボタンが有効になるのは、リソースに有効な場所を選択した場合のみです。

15.2.4 設計時に作成されたデータ・コントロールの公開方法

Oracle WebCenter Portal: Frameworkは、アプリケーション・ページおよびタスク・フローに追加できる大量のサービス・データ・コントロールを公開します。さらに、JDeveloperでSQLまたはWebサービス・データ・コントロールが作成されていることもあります。ユーザーがこれらのデータ・コントロールをページおよびタスク・フローに追加できるようにするには、リソース・カタログ内のデータ・コントロールを公開する必要があります。これには、次の例と図15-8で示すように、カタログ定義ファイルにcustomFolderエントリを追加する必要があります。

<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>

図15-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>

リソース・バンドルの使用の詳細は、第21.12項「実行時リソース文字列編集の構成」を参照してください。

アプリケーションに設計時データ・コントロールがあるかどうかに関係なく、実行時、カタログにはDesign Time Data Controlsというタイトルのフォルダが表示されます。

デプロイ済アプリケーションでは、リソース・マネージャによって設計時データ・コントロールを個別にカスタム・カタログに追加できます。即時利用可能なカタログは、実行時には編集できません。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリソースの追加に関する項を参照してください。

デプロイ済のアプリケーションでのカスタム・データ・コントロールの公開

アプリケーションにSQLまたはWebサービス・データ・コントロールを作成してあり、デプロイ済アプリケーションにそれらを公開する場合、次の手順を実行する必要があります:

- アプリケーションをADF共有ライブラリにパッケージ化します。

- アプリケーションをWebLogic Serverインスタンスにデプロイします。詳細は、第55.2.3項「Spaces共有ライブラリ・リストの再ビルド」を参照してください。

この構成を実行する場合、デプロイ済データ・コントロールは実行時リソース・レジストリの「デザインタイム・データ・コントロール」フォルダで使用できます。ユーザーはデータ・コントロールをレジストリから任意のカスタム・リソース・カタログに追加でき、そこからページおよびタスク・フローでそのデータ・コントロールを使用できます。

15.2.5 実行時に作成されたデータ・コントロールの公開方法

ユーザーは、実行時にリソース・マネージャにデータ・コントロールを作成できます。実行時に作成したデータ・コントロールをリソース・カタログで動的に表示するには、次の例に示すように、カタログ定義ファイルにcustomFolderエントリを追加します。

<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>

このフォルダを変換可能なリソースとして公開するには、フォルダの文字列属性をリソース文字列としてリソース・バンドルに保存する必要があります。変換可能なリソースの作成方法の例は、第15.2.4項「設計時に作成されたデータ・コントロールの公開方法」を参照してください。

データ・コントロールがフォルダにあるかどうかに関係なく、実行時、カタログにはRuntime Data Controlsというタイトルのフォルダが表示されます。

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

ポートレットが保護されているかどうかに関係なく、最初の何もしていない状態で、リソース・カタログでは使用できるすべてのプロデューサのポートレットが表示されます。したがって、ユーザーはアクセス権のない保護されたポートレットでも使用できます。ユーザーがそのようなポートレットをページに追加すると、ポートレット・コンポーネントは追加されますが、コンテンツは表示されません。ユーザーがアクセスできるポートレットのみを表示して使用するように、リソース・カタログのポートレットの可視性を制御できます。PortletItemSecurityHelperインタフェースを実装して、ユーザーの権限に基づいて条件付きでリソース・カタログにポートレットを表示します。

ポートレットの可視性を制御するには:

1. PortletItemSecurityHelperインタフェースを独自のアイテム・セキュリティ・ヘルパー・クラス(CustomPortletSecurityHelper.javaなど)に実装します。
例15-1は、PortletItemSecurityHelperインタフェースの実装例を示しています。この例での前提条件は次のとおりです。

- ポートレットを表示できるユーザーを制御するための権限が各ポートレットに対して定義されている。

- ポートレットに対するユーザーの権限をチェックするための権限クラス(PortletVisibilityPermission)が定義されている。

例15-1 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>

実行時にユーザーがコンポーザで「コンテンツの追加」をクリックすると、リソース・カタログにはユーザーが権限を持つポートレットのみが表示されます。

15.2.7 アプリケーションまたはページ用のデフォルト・リソース・カタログの構成方法

アプリケーションおよびページ・レベルでのデフォルトのカタログは、次の方法で構成できます。

- アプリケーションのadf-config.xmlファイルに登録します。これはアプリケーション全体の設定です。詳細は、「adf-config.xmlファイルでのカタログの登録」を参照してください。

- 複数のカタログがある場合には、特定のページやロケールで表示するカタログを決定するロジックを持つCatalogSelectorを追加します。詳細は、第15.5.1項「複数のリソース・カタログの構成方法」を参照してください。

- アプリケーション・ページにコンポーザ・コンポーネントが含まれる場合には、Page CustomizableコンポーネントでCatalog属性にカタログ名を指定します。静的値またはEL値を指定できます。詳細は、第B.1.1項「Page Customizable」を参照してください。

adf-config.xmlファイルでのカタログの登録

リソース・カタログを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ファイルを保存します。

15.2.8 リソース・カタログの定義時の必知事項

適切にリソース・カタログを実装するには、定義の元となるXMLスキーマだけでなく、アプリケーションが定義を検索する場所も知っておく必要があります。詳細は付録B「コンポーザ・コンポーネントのプロパティおよびファイル」を参照してください。

15.2.9 タスク・フロー・パラメータおよびタスク・フローを囲んでいるShow Detail Frameの属性の定義方法

実行時にコンポーザでリソース・カタログからのタスク・フローをアプリケーションのページに追加すると、タスク・フローは自動的に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. カタログ定義ファイルを保存します。

15.3 リソース・カタログの管理および実行時管理の有効化

Frameworkアプリケーションのリソース・マネージャを使用すると、管理者権限を持つユーザーはアプリケーション・リソースを実行時に作成および変更できるようになります。リソース・マネージャでカタログを公開することによって、管理者は実行時にそのカタログを管理できます。選択したカタログをJDeveloperからエクスポートして、管理者が実行時にそれらを変更したり削除したりできるようにすることも可能です

この項では、各自のカタログの実行時管理を有効化するためにJDeveloperで実行できるタスクの概要を説明します。次の項が含まれます:

- 第15.3.1項「リソース・マネージャのエントリの管理」

- 第15.3.2項「デプロイしたリソース・カタログのさらなる開発の有効化」

- 第15.3.3項「Spacesリソース・カタログでの作業」

15.3.1 リソース・マネージャのエントリの管理

JDeveloperでは、カタログ定義ファイルのポップアップ・メニューにあるリソース・マネージャ固有のオプションを次のように使用します。

- ポータル・リソースの作成: リソース・マネージャのカタログ用エントリを作成します。これで、ページ、テンプレートおよびタスク・フローの作成時に使用するカタログを選択できます。
エントリ作成の際に特定の属性を設定する必要があります。必要に応じて、リソース・マネージャで選択したカタログを訂正および削除できるユーザーを指定できます。詳細は、第16.2.1項「リソースをリソース・マネージャに追加する方法」を参照してください。

- ポータル・リソースの更新: リソース・マネージャのエントリ作成時に定義した属性を編集します。詳細は、第16.2.3項「ポータル・リソースのプロパティを更新する方法」を参照してください。

- ポータル・リソースの削除: このカタログのエントリをリソース・マネージャ・レジストリから削除します。詳細は、第16.2.4項「リソースをリソース・マネージャから削除する方法」を参照してください。

15.3.2 デプロイしたリソース・カタログのさらなる開発の有効化

即時利用可能なリソース・カタログは、実行時に変更または削除できません。ただし、管理者権限のあるユーザーは、即時利用可能なリソース・カタログのコピーを作成してそのプロパティを編集したり、コピーを削除したりできます。

注意:

実行時にリソース・カタログを作成した場合に、設計時環境にインポートして戻さないときは、新規リソース・カタログがアプリケーションの再デプロイ時に失われることがあります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のリソース・カスタマイズの保存に関する項を参照してください。

リソース・マネージャの「ソースの編集」オプションを使用すると、ユーザーは、コピーしたリソース・カタログまたはカスタムのリソース・カタログのコンテンツを実行時に変更できます。ただし、テキスト編集は実行時ソース・エディタよりJDeveloperで行う方が簡単なため、ユーザーはリソース・カタログをダウンロードして、それをJDeveloperで編集し、デプロイ済アプリケーションにアップロードして戻すことを選択できます。設計時、このタイプのラウンドトリップ開発には、ダウンロードしたリソース・カタログのインポート、JDeveloperでの編集、およびデプロイ済アプリケーションにアップロードして戻すためのエクスポートが含まれます。

この項では、JDeveloperでリソース・カタログをインポートおよびエクスポートする方法について説明します。カタログ・コンテンツの変更の詳細は、第15.2.3項「リソース・カタログのコンテンツの管理方法」を参照してください。

15.3.2.1 リソース・カタログのエクスポート

デプロイ済のアプリケーションでリソース・カタログを公開するには、JDeveloperからリソース・カタログをエクスポートし、実行時リソース・マネージャを使用してアプリケーションにアップロードする必要があります。カタログをJDeveloperにエクスポートすると、カタログ定義ファイルとgeneric-site-resources.xmlファイルが含まれたEARファイルが作成されます。リソースがリソース・マネージャの適切なカテゴリの下に表示されるように、generic-site-resources.xmlファイルにはリソースのタイプ(ここではリソース・カタログ)を識別できるメタデータが含まれます。

一般的な情報は、第16.4.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

15.3.2.2 リソース・カタログのインポート

実行時にリソース・カタログを公開すると、権限を持ったユーザーはビジネス要件に合うようにコンポーネントを追加または削除できます。ただし、カタログ・フィルタの適用、デプロイ済アプリケーションで使用できないカスタム・リソースの追加など、さらに複雑なタスクを実行するには、実行時カタログをダウンロードし、JDeveloperにインポートして編集し、JDeveloperからエクスポートして実行時アプリケーションにアップロードして戻す必要があります。

注意:

デプロイ済アプリケーションで使用できない、JDeveloperで作成されたタスク・フローなどカスタム・リソースを公開するには、カタログのエクスポートとともに、リソースを共有ライブラリとしてデプロイする必要もあります。

カタログをデプロイ済アプリケーションからダウンロードすると、カタログ定義XMLファイルとgeneric-site-resources.xmlファイルが含まれたEARファイルが作成されます。generic-site-resources.xmlファイルには、リソース・カタログ固有のメタデータが含まれます。これにより、リソースのタイプ(ここではリソース・カタログ)を識別できます。JDeveloperでリソース・カタログを編集するには、まずEARファイルをインポートする必要があります。インポートの際には、カタログ定義ファイルはsiteResourcesフォルダに抽出されます。

リソースがWebCenter Portal: Spacesからダウンロードされた場合、APPLICATION_ROOT/oracle/webcenter/siteresources/scopedMD/guidに抽出されます。ここで、guidはリソースのダウンロード元のスペースのGUIDです。それ以外の場合、インポートされたリソースは、APPLICATION_ROOT/oracle/webcenter/portalappで作成されます。カタログ定義ファイルを開き、それを設計時に他のカタログのように編集できます。更新済のカタログはランタイム・アプリケーションにエクスポートされる必要があります。

一般的な情報は、第16.4.2項「ポータル・リソースをJDeveloperにインポートする方法」を参照してください。

デプロイ済アプリケーションからのカタログ・ダウンロードの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリソース・カタログのアップロードとダウンロードに関する項を参照してください。

15.3.3 Spacesリソース・カタログでの作業

デフォルトで、WebCenter Portal: Spacesには、ユーザーが使用するためのすぐに使用可能な複数のリソース・カタログが用意されています。これらのデフォルトのカタログが適さない場合には、WebCenter Portal: Spaces内で独自のカタログを作成できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の「ポータルまたはコミュニティを構成するリソースの使用」の章を参照してください。WebCenter Portal: Spacesの編集機能を超えるリソース・カタログを作成する場合は、JDeveloperでカタログを作成して、それをWebCenter Portal: Spacesにアップロードできます。最初からカタログを作成する必要はありません。WebCenter Portal: Spacesから既存のカタログをエクスポートし、それをJDeveloperで編集するか、またはデフォルトのカタログのいずれかを起点として使用することができます。

Oracle WebCenter Portalには特別なJDeveloperワークスペース(DesignWebCenterSpaces.jws)が用意されており、リソース・カタログなどのリソースを開発してWebCenter Portal: Spacesにアップロードする際に利用できます。第55章「JDeveloperを使用したSpacesアプリケーションの拡張」には、サンプルのワークスペースの場所、およびWebCenterSpacesResourcesプロジェクトを使用してカスタム・カタログやWebCenter Portal: Spacesのその他のタイプのリソースを作成する方法が記載されています。詳細は、第55章「JDeveloperを使用したSpacesアプリケーションの拡張」を参照してください。

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

カタログ・コンテンツを基本的にはすべてのユーザーに対して同一になるように配置し、コンテンツのサブセットをユーザーごとに別の表示にするには、リソース・カタログを構成し、特定の基準に基づいて選択したアイテムをフィルタ処理で除外できます。

たとえば、2人のユーザーAとBがあるページに対して異なる権限を持っている場合、ユーザーAにはカタログ全体を表示し、ユーザーBにはカタログのアイテムのサブセットのみを表示するようアプリケーションを構成できます。

カタログ内のリソースをカタログ・レベルまたは個々のリソース・レベルでフィルタ処理できます。この項では、両方の手順を説明します。次の項が含まれます:

- 第15.4.1項「リソースレベル・フィルタリング」

- 第15.4.2項「カタログレベル・フィルタリング」

15.4.1 リソースレベル・フィルタリング

リソースを条件付きで表示するには、リソース上でVisible属性にEL値を指定します。Visible属性の編集の詳細は、第15.2.3項「リソース・カタログのコンテンツの管理方法」を参照してください。

15.4.2 カタログレベル・フィルタリング

カタログにフィルタを適用するには、oracle.adf.rc.spi.plugin.catalog.CatalogDefinitionFilterインタフェースを実装する必要があります。さらに、このフィルタをリソース・カタログに関連付ける必要があります。

CatalogDefinitionFilterを実装するには:

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して「OK」をクリックします。

3. 「Javaクラスの作成」ダイアログで、クラスの名前(CatalogFilterなど)を指定します。

4. 「オプション属性」セクションの下に、oracle.adf.rc.spi.plugin.catalog.CatalogDefinitionFilterインタフェースを追加します。

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

6. フィルタリング・アイテムにロジックを指定します。

注意:

フィルタ・ロジックの実装時には、通常、現在のユーザーと現在のページに関する情報が必要です。この情報は、FacesContextから取得できます。

例15-2に、CatalogDefinitionFilterサンプル実装を示します。第15.2項「カスタム・リソース・カタログの作成」で説明されるカスタム・カタログusers-catalog.xmlからユーザーjdoeのDiscussionsフォルダ(forumsFolder)が非表示になるように構成されます。ADF Faces ComponentsとDiscussionsフォルダとともに、カタログ全体が他のすべてのユーザーに表示されます。

例15-2 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. 「カタログ」セクションでルート・ノードを選択し、「カタログ・フィルタ」フィールドを、作成したJavaクラス名(webcenter.CatalogFilterなど)に設定します。
これにより、definitionFilter属性がファイルの「ソース」ビューに追加されます。

9. カタログ定義ファイルを保存します。

15.5 複数のリソース・カタログの構成

様々なカタログを、編集されるページ、ユーザー、ユーザー・ロールなど特定の基準に基づいて様々なユーザーに公開できます。この項では、複数のリソース・カタログをアプリケーションに関連付ける方法を説明します。次のサブセクションが含まれます:

- 第15.5.1項「複数のリソース・カタログの構成方法」

- 第15.5.2項「実行時の処理」

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

複数のカタログを使用するには、ResourceCatalogSelector APIを実装して、ユーザーと編集されるページに適したカタログを選択します。アプリケーションのadf-config.xmlファイルにcatalog-selectorエントリを追加し、ResourceCatalogSelectorクラスの名前を指定する必要があります。catalog-selectorを指定しない場合、デフォルトのカタログがすべての編集可能なページに使用され、すべてのユーザーに同一のコンテンツが表示されます。catalog-selectorを指定する場合、デフォルトのカタログは指定したセレクタがnullを返した場合にのみ使用されます。

複数のリソース・カタログを実装するには:

1. カスタム・カタログを作成するには、第15.2項「カスタム・リソース・カタログの作成」で概説した手順を実行します。

2. 独自のリソース・カタログ・セレクタ・クラス(CatalogSelector.javaなど)に、oracle.adf.rc.model.config.ResourceCatalogSelectorインタフェースを実装します。
例15-3に、カスタム・リソース・カタログ(admin-catalog.xml)を管理者権限を持つahunoldに表示し、users-catalog.xmlをユーザーskingとユーザーjdoeに表示するカタログ・セレクタ実装を示します。これらのいずれかのカタログのレンダリングで問題がある場合には、デフォルトのカタログがユーザーに表示されます。

例15-3 複数のリソース・カタログにエントリを表示するサンプル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」を参照してください。

15.5.2 実行時の処理

ユーザーには、指定した基準に基づいて異なるカタログが表示されます。

例15-3のResourceCatalogSelectorの実装に基づいて、図15-9および図15-10は、ユーザーskingまたはjdoe、および管理者ahunoldそれぞれに表示される2つのカタログを示しています。

図15-9 skingとjdoeに表示されるカタログ

「図15-9 skingとjdoeに表示されるカタログ」の説明

図15-10 ahunoldに表示されるリソース・カタログ

「図15-10 ahunoldに表示されるリソース・カタログ」の説明

15.6 リソース・カタログでの問題のトラブルシューティング

この項では、リソース・カタログの使用中に発生する可能性がある問題のトラブルシューティングに役立つ情報を提供します。

ロギングの構成の詳細は、「コンポーザのADFロギングの構成」を参照してください。

問題

リソース・カタログが空です。

解決方法

デフォルトのカタログは、MDSには使用できません。デプロイメント・プロファイルに、デフォルトのカタログ・ファイルをコピーする際に必要なエントリが含まれていることを確認します。また、adf-config.xmlのMDSセクションで、ネームスペース・エントリがデフォルトのカタログ・ファイルを指していることを確認します。

問題

プロジェクト・タスク・フローがリソース・カタログに表示されません。

解決方法

タスク・フローはADFライブラリ(JARファイル)としてパッケージ化され、プロジェクトに追加されている必要があります。また、タスク・フローIDが次の形式で指定されていることも確認する必要があります。

taskflow://Path_to_Task_Flow/Task_Flow_Definition_File_Name#Task_Flow_ID
Ex. taskflow://oracle/webcenter/peopleconnections/wall/controller/taskflows/WallViewer.xml#WallViewer

16 リソース・マネージャの追加および使用

この章では、ユーザーが実行時にリソース・マネージャを使用してポータル・リソースを管理できるようにする方法を説明します。

リソース・マネージャを使用すると、ユーザーは実行時ポータル・リソースを(WebCenter Portal: FrameworkアプリケーションまたはWebCenter Portal: Spacesから)ダウンロードして、さらに開発するためにOracle JDeveloperにインポートすることもできます。これらのリソースをJDeveloperからエクスポートして、デプロイ済アプリケーションにアップロードし直すこともできます。ポータル・リソースをJDeveloperで最初から作成して、デプロイ済アプリケーションにアップロードすることもできます。

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

- 第16.1項「実行時リソース管理の概要」

- 第16.2項「JDeveloperでのポータル・リソースの使用」

- 第16.3項「ポータルの実行時管理の有効化」

- 第16.4項「リソースのラウンドトリップ開発の有効化」

リソース・マネージャを使用して実行時にポータル・リソースを管理する手順の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のポータルまたはコミュニティを構成するリソースの使用に関する項の章を参照してください。

16.1 実行時リソース管理の概要

ポータルは、常に進化しているアプリケーションです。ポータルの初期フレームワークがデプロイメントの前に設計されますが、これは実際には起点の役割を担います。ポータルの設計は、ポータルの実際のユーザーによって拡張されていくことが多いです。

この実行時リソース管理では、次のことを行えます。

- 実行時開発 - ページ、スキン、データ・コントロールなどのリソースを実行時に作成することによって、デプロイ後もポータルの開発を続けます。詳細は、第16.3.2項「実行時にリソース・マネージャを使用する方法」を参照してください。

- ラウンドトリップ開発 - デプロイ済ポータルからJDeveloperにリソースをプルして、さらに開発してから、拡張したリソースを実行中アプリケーションにアップロードして戻します。詳細は、第16.4項「リソースのラウンドトリップ開発の有効化」を参照してください。

- 反復開発 - 実行中のポータルに、アプリケーションの再デプロイや再起動の必要なく、JDeveloperからメタデータのみのリソースを取り込んで表示する、新しく強化された表示方法を提供します。詳細は、第1.5項「反復開発の準備」を参照してください。

- WebCenter Portal: Spacesの拡張: JDeveloperでWebCenter Portal: Spacesの新規リソースを構築および管理して、それらのリソースを実行時ポータルに配布できるように定期的にパッケージ化します。詳細は、第55章「JDeveloperを使用したSpacesアプリケーションの拡張」を参照してください。

WebCenter Portalでは、リソース・マネージャを使用して実行時にリソースを管理できます。リソース・マネージャを使用して、適切な権限を持つユーザーは、アプリケーションのデプロイ後にポータルの開発を続行できます(図16-1)。

図16-1 WebCenter Portal: Frameworkアプリケーションのリソース・マネージャ

「図16-1 WebCenter Portal: Frameworkアプリケーションのリソース・マネージャ」の説明

実行時に、適切な権限のあるユーザーは、次のものを作成および編集できます。

- ページ

- ページ・テンプレート

- ナビゲーション・モデル

- リソース・カタログ

- スキン

- ページ・スタイル

- コンテンツ・プレゼンタ表示テンプレート

- マッシュアップ・スタイル

- データ・コントロール

- タスク・フロー

ポータル・ユーザーは、リソース・マネージャを使用して、リソースまたはアプリケーション全体を実行時環境からダウンロードし、JDeveloperで編集して、デプロイ済アプリケーションにアップロードして戻すこともできます。

ユーザーは、JDeveloperで最初からリソースを作成して、それをポータル・リソースとしてエクスポートし、デプロイ済ポータルにアップロードすることもできます。これは、WebCenter Portal: Spacesで使用するために、完全に機能するポータル・リソースを追加で作成する場合のきわめて有用な方法です。

このプロセスは、ラウンドトリップ開発と呼ばれます。詳細は、第16.4項「リソースのラウンドトリップ開発の有効化」を参照してください。

16.2 JDeveloperでのポータル・リソースの使用

リソース・マネージャにリソースを組み込むと、そのリソースの実行時管理が可能となりますが、このようなリソースはポータル・リソースとして作成する必要があります。

リソースをポータル・リソースとして作成するには、アプリケーション・プロジェクトのoracle/webcenter/portalappディレクトリにそのリソースを配置する必要があります。

この項には次のサブセクションが含まれます:

- 第16.2.1項「リソースをリソース・マネージャに追加する方法」

- 第16.2.2項「コンテンツ・ディレクトリに関する必知事項」

- 第16.2.3項「ポータル・リソースのプロパティを更新する方法」

- 第16.2.4項「リソースをリソース・マネージャから削除する方法」

16.2.1 リソースをリソース・マネージャに追加する方法

リソースの実行時管理を有効にするには、そのリソースをリソース・マネージャに追加する必要があります。これを実行するには、リソースをポータル・リソースとして特定する必要があります。

リソースをリソース・マネージャに追加するには:

1. アプリケーション・ナビゲータで、リソース・マネージャに追加するリソースを右クリックし、「ポータル・リソースの作成」を選択します。

注意:

ポップアップ・メニューに「ポータル・リソースの作成」オプションが表示されない場合は、そのリソースがoracle/webcenter/portalappディレクトリの下にないということです。リソースを適切なディレクトリに移動するには、リソースを右クリックして、「リファクタ」を選択し、「移動」を選択します。

2. 「ポータル・リソースの作成」ダイアログ(図16-2)の「表示名」フィールドで、必要に応じて名前を編集します。
これは、実行時にリソース・マネージャにリスト表示される名前であるため、ユーザーが表示名からリソースを簡単に識別できるようにしておきます。

図16-2 「ポータル・リソースの作成」ダイアログ

「図16-2 「ポータル・リソースの作成」ダイアログ」の説明

3. 「リソース・タイプ」フィールドでは、リソース・マネージャに追加しているリソースの種類が特定されます。このフィールドを編集することはできません。

4. 「アイコンURL」フィールドに、リソースのグラフィカル表現として使用するイメージのパスとファイル名を入力します。
ページ・スタイルの場合、このアイコンは、「ページの作成」ダイアログに表示されます。

5. 「説明」フィールドに、リソースの説明を入力します。この説明は、ユーザーがこのリソースをアプリケーションで使用するかどうかを決める際の助けとなるものにする必要があります。
説明は、リソースの「情報」ダイアログおよび実行時のリソース・マネージャに表示されます。

6. 「コンテンツ・ディレクトリ」フィールドで、イメージ、JavaScript、スタイル・シート、HTMLファイルなど、リソースの依存オブジェクトを格納するディレクトリを入力または参照します。詳細は、第16.2.2「コンテンツ・ディレクトリに関する必知事項」を参照してください。

注意:

ここで指定するフォルダは、リソースのエクスポート時にエクスポート・アーカイブに追加されるため、このフォルダの下に作成した依存オブジェクトはすべてターゲット・システムにプッシュされます。

このフィールドは、このような依存オブジェクトを組み込めるリソースの場合にのみ表示されます。

7. リソースのリソースレベル・セキュリティを指定する場合は、「セキュリティ」タブをクリックします。そうしない場合は、手順11に移ります。
リソースレベル・セキュリティでは、個々のリソースのアプリケーションレベル・セキュリティを上書きして、実行時にリソースの編集および削除を実行できるユーザーまたはグループを指定できます。

8. 「デフォルトのアクセス・ポリシーをオーバーライド」(図16-3)を選択します。

図16-3 「ポータル・リソースの作成」の「セキュリティ」タブ

「図16-3 「ポータル・リソースの作成」の「セキュリティ」タブ」の説明

9. 「新規ロールへの権限の追加」アイコン(プラス記号で表される)をクリックし、権限を付与するロールを選択します。

10. 実行時のリソースへの完全なアクセス権を付与するには、「管理」チェック・ボックスを選択します。このロールを有するユーザーは、このリソースを編集および削除できます。
実行時にリソースを編集する権限を付与するには、「更新」チェック・ボックスを選択します。このロールを有するユーザーは、このリソースを編集できますが、削除はできません。

注意:

ユーザーには、リソース・マネージャにアクセスするための適切な権限も必要です。詳細は、第16.3.1項「リソース・マネージャ・タスク・フローを追加する方法」を参照してください。

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

リソースがリソース・マネージャに追加され、適切な権限を持つユーザーは実行時にリソースを管理できます。

16.2.2 コンテンツ・ディレクトリに関する必知事項

リソースを実行時に管理できるようにする場合、イメージ、JavaScript、スタイル・シート、HTMLファイルなど、リソースから参照する依存オブジェクトを次のディレクトリの下に格納する必要があります。

APPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/shared

また、ベスト・プラクティスとして、依存オブジェクトをsharedディレクトリの下のリソース固有のディレクトリに格納することをお薦めします。たとえば、Template1というページ・テンプレートのイメージは、次の場所に格納できます。

APPLICATION_ROOT/Portal/public_html/oracle/webcenter/portalapp/shared/pageTemplates/Template1

これによって、依存オブジェクトが含まれる追加リソースをランタイムからインポートした場合に生じる可能性のある競合が回避されます。

リソース内の依存オブジェクトを参照するには、次の形式を使用します。

/oracle/webcenter/portalapp/shared/object

例:

<af:image source="/oracle/webcenter/portalapp/shared/pageTemplates/Template1/logo.gif" id="pt_12">

リソースをポータル・リソースとして追加する場合(第16.2.1項「リソースをリソース・マネージャに追加する方法」で説明したとおり)、必ず、コンテンツ・ディレクトリが適切なsharedディレクトリを指すようにします。

注意:

実行時に作成したリソースの場合、デフォルトのコンテンツ・ディレクトリは、/oracle/webcenter/siteresources/scopedMD/sharedです。

16.2.3 ポータル・リソースのプロパティを更新する方法

リソース・マネージャでリソースの詳細を更新できます。

ポータル・リソースのプロパティを更新するには:

1. アプリケーション・ナビゲータで、編集するリソースを右クリックし、「ポータル・リソースの更新」を選択します。

2. 「ポータル・リソースの更新」ダイアログで、必要に応じて各フィールドを編集します。
このダイアログの各フィールドの詳細は、第16.2.1項「リソースをリソース・マネージャに追加する方法」を参照してください。

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

16.2.4 リソースをリソース・マネージャから削除する方法

ユーザーが実行時に特定のリソースを管理できるようにする必要がなくなった場合、そのリソースをリソース・マネージャから削除できます。

リソースをリソース・マネージャから削除するには:

1. アプリケーション・ナビゲータで、削除するリソースを右クリックし、「ポータル・リソースの削除」を選択します。

2. 「ポータル・リソースの削除」ダイアログで、「はい」をクリックして、リソース・マネージャからリソースを削除することを確認します。
リソースがリソース・マネージャから削除され、実行時に編集することもダウンロードすることもできなくなります。リソース自体は削除されないため、Frameworkアプリケーション内では引き続き使用できます。

16.3 ポータルの実行時管理の有効化

リソース・マネージャをポータル内のページに追加することによって、ポータル管理者が実行時にリソースを管理できるようにすることが可能です。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成した場合、「管理」ページが自動的にそのアプリケーションに追加されます。このページには、リソース・マネージャのタブが組み込まれています。

必要に応じて、リソース・マネージャをアプリケーション内の別のページに追加することができ、これは、「リソース・タイプのリスト」タスク・フローを対象ページに追加することによって実行できます。

この項には次のサブセクションが含まれます:

- 第16.3.1項「リソース・マネージャ・タスク・フローを追加する方法」

- 第16.3.2項「リソース・マネージャを実行時に使用する方法」

16.3.1 リソース・マネージャ・タスク・フローを追加する方法

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用して作成したアプリケーションの場合、WebCenter Portal管理コンソール(「リソース」タブ)から、デフォルトのリソース・マネージャ・タスク・フローを使用できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアプリケーション・リソースの管理に関する項を参照してください。

また、他のタスク・フローと同様に、リソース・マネージャ・タスク・フローをアプリケーション・ページに追加できます。これは、WebCenter PortalのFrameworkアプリケーション・テンプレートを使用していないため、WebCenter Portal管理コンソールがプロジェクトに含まれていない場合に特に有用です。

ページにリソース・マネージャ・タスク・フローを追加する場合、表示アクセス権を持つすべてユーザーがそのタスク・フローを表示し、リソース・プロパティの表示、リソースのプレビューなどのリソースに関する表示関連操作を実行できます。ユーザーが新しいリソースの作成、リソースの編集、リソースの削除など、リソースに関する他の操作を実行できるように、使用するリソースのタイプに関する適切な権限を持っている必要があります。これらの権限は、ロール・マネージャ・タスク・フローを使用してプロビジョニングできます。詳細は、第68.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。デフォルトで、Administratorロールは、リソース・マネージャ・タスク・フローで公開されるすべてのリソース・タイプに関する管理アクセス権を持ちます。

リソース・マネージャ・タスク・フローを追加するには:

1. リソース・マネージャを追加するページを開きます。

2. 「リソース・カタログ」で「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」を開きます。

3. 「リソース・タイプのリスト」タスク・フローを選択して、それをページ上の目的の場所にドラッグします。

4. 表示されたメニューから、「リージョン」を選択します。
リソース・マネージャ・ライブラリをプロジェクトに追加するよう要求される場合があります。「ライブラリの追加」をクリックして確認します。

5. リソース・マネージャ・タスク・フローがページに追加されます。

6. ユーザーが実行時にリソースをアップロードおよびダウンロードできるようにするには、リソース・マネージャ・タスク・フローが含まれるフォームのusesUploadプロパティをtrueに設定する必要があります。

<af:form id="f1" usesUpload="true">

16.3.2 リソース・マネージャを実行時に使用する方法

実行時に、リソース・マネージャは、ポータルで使用可能なリソースの管理ツールへのアクセスを提供します。たとえば、管理者は、新規リソース(ナビゲーション・モデル、ページ・テンプレート、マッシュアップ・スタイルなど)の作成、既存のリソースの編集、他のアプリケーションからエクスポートしたリソースのアップロードなどを実行できます。

表16-1に、実行時に管理可能なリソースのタイプをリストし、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』へのリンクを提供します。ここでは、実行時にこれらのリソースを使用する方法の詳細を参照できます。

表16-1 実行時に管理可能なWebCenter Portalリソース

リソース

説明

ドキュメント

ページ

アプリケーションのページの作成と管理を実行します。

ページの作成に関する項

ページ・テンプレート

ユーザーの画面における個々のページおよびページ・グループの表示方法を定義します。

ページ・テンプレートの使用に関する項

ナビゲーション・モデル

スペース、ページ、コンテンツ・リポジトリ、外部Webページなど、複数のソースからの情報をまとめてリンクする方法を定義します。

ナビゲーションの使用に関する項

リソース・カタログ

WebCenter Portal: Spacesユーザーがページ、ページ・テンプレートおよびタスク・フローに追加できるコンポーネントおよび接続を定義します。

リソース・カタログの使用に関する項

スキン

特定のスペースまたはアプリケーション全体の外観とルック・アンド・フィールを、色とフォントを含めて定義します。

スキンの使用に関する項

ページ・スタイル

新規作成されたページのレイアウトを定義し、ページでサポートされるコンテンツ・タイプを示す場合もあります。

ページ・スタイルの使用に関する項

コンテンツ・プレゼンタ表示テンプレート

コンテンツを表示するためのテンプレートを管理します。

コンテンツ・プレゼンタを使用したコンテンツの公開に関する項

マッシュアップ・スタイル

タスク・フローの作成に使用可能なテンプレートを管理します。

マッシュアップ・スタイルの管理に関する項

データ・コントロール

特にビジネス・マッシュアップで使用するために、外部リポジトリのデータに接続して読み取るデータ・コントロールを作成して管理します。

データ・コントロールの作成と管理に関する項

タスク・フロー

選択したマッシュアップ・スタイルに基づいたタスク・フローを作成および管理します。

タスク・フローの作成と管理に関する項

この項には次のサブセクションが含まれます:

- 第16.3.2.1項「リソース・マネージャへのアクセス」

- 第16.3.2.2項「リソースの作成」

- 第16.3.2.3項「リソースのアップロードとダウンロード」

- 第16.3.2.4項「リソースの編集」

- 第16.3.2.5項「リソースのコピー」

- 第16.3.2.6項「リソースのセキュリティの設定」

- 第16.3.2.7項「リソースの削除」

- 第16.3.2.8項「リソースの表示または非表示」

- 第16.3.2.9項「リソースのソース・コードの編集」

- 第16.3.2.10項「リソースのプロパティの設定」

- 第16.3.2.11項「リソースのプレビュー」

注意:

実行時のページの使用プロセスは、その他のリソースの場合とは異なります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のページの使用に関する項を参照してください。

16.3.2.1 リソース・マネージャへのアクセス

実行時にリソース・マネージャにアクセスするには、ユーザーは組込みの「管理」ページ(アプリケーションで使用可能な場合)にナビゲートして、「リソース」タブをクリックします。「管理」ページがアプリケーションに組み込まれていない場合は、リソース・マネージャが含まれるページにユーザーをダイレクトする必要があります。

16.3.2.2 リソースの作成

Frameworkアプリケーションで使用可能なリソースがユーザーの要件を満たさない場合、ユーザーは実行時にカスタム・リソースを作成できます。

実行時にユーザーは特定のリソースを最初から作成できます。ユーザーが既存のリソースを拡張することによってのみ作成可能なリソースがあります。たとえば、実行時にユーザーはタスク・フローを最初から作成できますが、スキンについては、既存のスキンの拡張によってのみ作成できます。コンテンツ・プレゼンタ表示テンプレートなど、その他のリソースは、実行時に作成できません。

表16-2は、実行時のリソース作成のサポートについて示しています。

表16-2 実行時のリソース作成のサポート

リソース

ユーザーによる実行時のリソース作成の可否

可能なリソース作成方法

ページ

はい

最初からまたは既存ページのコピー作成による

ページ・テンプレート

はい

既存ページ・テンプレートのコピー作成のみによる

ナビゲーション・モデル

はい

最初からまたは既存のナビゲーション・モデルのコピー作成による

リソース・カタログ

はい

最初からまたは既存のリソース・カタログのコピー作成による

スキン

はい

既存スキンのコピー作成のみによる

ページ・スタイル

はい

既存ページ・スタイルのコピー作成およびソース編集のみによる

コンテンツ・プレゼンタ表示テンプレート

いいえ

なし

マッシュアップ・スタイル

はい

既存マッシュアップ・スタイルのコピー作成およびソース編集のみによる

データ・コントロール

はい

最初からまたは既存のデータ・コントロールのコピー作成による

タスク・フロー

はい

最初からまたは既存のタスク・フローのコピー作成による

ページを作成するには:

1. Frameworkアプリケーションで、リソース・マネージャにナビゲートします。詳細は、第16.3.2.1項「リソース・マネージャへのアクセス」を参照してください。

2. 左のナビゲーション・パネルで、作成するリソースのタイプを選択します。

3. メニュー・バーの「作成」をクリックします。

4. 表示されるダイアログで、リソースの詳細を入力します。
これらの詳細は、作成しているリソースのタイプによって異なります。実行時にリソース作成の詳細を参照可能な『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』へのリンクは、表16-1を参照してください。

5. 「作成」をクリックします。
新規作成されたリソースが、リソース・マネージャにリスト表示されます。リソースの隣のグレーのアイコンは、これがまだ公開されていない、つまりユーザーはまだ使用できないことを示します。リソースの公開の詳細は、第16.3.2.8項「リソースの表示または非表示」を参照してください。

注意:

実行時にリソースを作成した場合に、設計時環境にインポートして戻さないときは、新規リソースがアプリケーションの再デプロイ時に失われることがあります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のリソース・カスタマイズの保存に関する項を参照してください。

16.3.2.3 リソースのアップロードとダウンロード

「アップロード」および「ダウンロード」オプションを使用すると、デプロイ後およびラウンドトリップのアプリケーション開発が可能になります。これらのアクションによって、新規リソースまたは修正済リソースをJDeveloperからアプリケーションに組み込んだ後、必要に応じてアプリケーションからJDeveloperでの開発にプッシュして戻すプロセスが簡単になります。

詳細は、第16.4項「リソースのラウンドトリップ開発の有効化」を参照してください。

16.3.2.4 リソースの編集

認可ユーザーは、Frameworkアプリケーション・リソースをリソース・マネージャを使用して編集できます。これは、それらのリソースが作成されたのが設計時と実行時のいずれであるかや、デプロイ後にアプリケーションにアップロードされたものかどうかに関係なく実行できます。

リソースを編集するには:

1. Frameworkアプリケーションで、リソース・マネージャにナビゲートします。詳細は、第16.3.2.1項「リソース・マネージャへのアクセス」を参照してください。

2. 左のパネルで、編集するリソースのタイプを選択します。

3. 右のパネルで、編集するリソースを選択します。

4. メニュー・バーの「編集」をクリックし、「編集」を選択します。

5. 表示されるダイアログで、リソースの詳細を編集します。
これらの詳細は、編集しているリソースのタイプによって異なります。実行時にリソース作成の詳細を参照可能な『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』へのリンクは、表16-1を参照してください。

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

16.3.2.5 リソースのコピー

実行時にユーザーはリソースのコピーを作成できます。この機能は次の場合に有用です。

- リソースのバックアップを作成する場合

- オリジナルの使用を続行しながらリソースを更新する場合

- 既存のリソースを新規リソースの起点として使用する場合

ページとコンテンツ・プレゼンタ表示テンプレートを除くすべてのタイプのリソースのコピーを作成できます。リソースのコピーを作成した場合、そのコピーは非表示として指定されます。

リソースをコピーするには:

1. Frameworkアプリケーションで、リソース・マネージャにナビゲートします。詳細は、第16.3.2.1項「リソース・マネージャへのアクセス」を参照してください。

2. 左のパネルで、コピーするリソースのタイプを選択します。

3. 右のパネルで、コピーするリソースを選択します。

4. メニュー・バーの「編集」をクリックし、「コピー」を選択します。

5. 「コピー」ダイアログの「表示名」フィールドに、新規リソースの名前を入力します。

6. 「説明」フィールドに、新規リソースの説明を入力します。

7. 「コピー」をクリックします。

16.3.2.6 リソースのセキュリティの設定

ユーザーは、セキュリティ設定を使用して、選択したリソースの修正と削除を実行できるユーザーまたはグループを指定できます。デフォルトで、リソース・アクセスは、アプリケーションレベルの権限で制御されます。「セキュリティ設定」ダイアログでは、アプリケーションレベルの権限を上書きして、選択したリソースに特定の権限を定義できます。

リソースのセキュリティを設定するには:

1. Frameworkアプリケーションで、リソース・マネージャにナビゲートします。詳細は、第16.3.2.1項「リソース・マネージャへのアクセス」を参照してください。

2. 左のパネルで、セキュリティを設定するリソースのタイプを選択します。

3. 右のパネルで、セキュリティを設定するリソースを選択します。

4. メニュー・バーの「編集」をクリックし、「セキュリティ設定」を選択します。

5. 「セキュリティ設定」ダイアログで、「カスタム権限の使用」を選択して、選択したリソースを管理および更新できるユーザーを定義します。
アプリケーションに定義されているアクセス設定を継承するには、「アプリケーション権限の使用」を選択します。

6. 「ユーザーの追加」または「グループの追加」をクリックして、リソースへのアクセス権を付与するユーザーまたはグループを選択します。

7. リソースへの完全なアクセス権を付与するには、「管理」チェック・ボックスを選択します。このようなユーザーは、このリソースを編集および削除できます。
リソースを編集する権限を付与するには、「更新」チェック・ボックスを選択します。このようなユーザーは、このリソースを編集できますが、削除はできません。

8. アクセス権限を取り消すには、ユーザーまたはグループを選択して、「アクセス権限の削除」をクリックします。

9. 「アクセスの設定」をクリックします。

16.3.2.7 リソースの削除

リソースがアプリケーションで必要ではなくなった場合、それを削除できます。ユーザーは、実行時および設計時に作成したリソースおよびアップロードしたリソースを削除できます。

リソースを編集するには:

1. Frameworkアプリケーションで、リソース・マネージャにナビゲートします。詳細は、第16.3.2.1項「リソース・マネージャへのアクセス」を参照してください。

2. 左のパネルで、削除するリソースのタイプを選択します。

3. 右のパネルで、削除するリソースを選択します。

4. メニュー・バーの「編集」をクリックし、「削除」を選択します。

5. 「削除の確認」ダイアログで、「削除」をクリックします。

16.3.2.8 リソースの表示または非表示

実行時と設計時のいずれに作成されたかにかかわらず、すべてのリソースを非表示または使用可能として指定できます。リソース・マネージャで、使用可能なリソースにはすべて緑のチェック・マークが付き、リソースの名前の隣に「使用可能」という語が表示されます。グレーのアイコンおよびリソースの名前の隣の「非表示」という語は、このリソースが非表示として指定されており、アプリケーションで使用できないことを示します。

リソースを作成またはアップロードする場合は、デフォルトで非表示として指定されます。非表示のリソースはアプリケーションで使用できません。非表示リソースをコピーしたり、別のリソースの開始ポイントとして使用したりする場合などに、リソース・マネージャで非表示リソースを使用できます。

リソースを表示する、または非表示にするには:

1. Frameworkアプリケーションで、リソース・マネージャにナビゲートします。詳細は、第16.3.2.1項「リソース・マネージャへのアクセス」を参照してください。

2. 左のパネルで、表示するまたは非表示にするリソースのタイプを選択します。

3. 右のパネルで、表示するまたは非表示にするリソースを選択します。

4. メニュー・バーの「編集」をクリックし、リソースが現在表示されているか、それとも非表示になっているかに基づいて、「表示」または「非表示」を選択します。
リソースが非表示であった場合、「編集」メニューに「表示」オプションが表示されます。「表示」を選択すると、リソースがアプリケーションで使用可能になります(緑のチェック・マークとリソースの隣の「使用可能」という語で示されます)。

リソースが表示されていた場合、「編集」メニューに「非表示」オプションが表示されます。「非表示」を選択すると、リソースがアプリケーションで使用できなくなります(グレーのアイコンとリソースの隣の「非表示」という語で示されます)。

16.3.2.9 リソースのソース・コードの編集

実行時のリソース編集に対する制御を強化できるように、リソース・マネージャには、「ソースの編集」オプションが用意されています。このオプションを使用して、データ・コントロールを除くすべてのリソースの基礎となるソース・コードを編集できます。変更はMDSに保存され、すぐに使用できます。

リソースのソース・コードを編集する際に、ラウンドトリップ開発サイクル全体を経由する必要のない、コードの拡張編集を実行できます。ラウンドトリップ開発の詳細は、第16.4項「リソースのラウンドトリップ開発の有効化」を参照してください。

リソースを最初から作成したり、リソースを作成し、デフォルトのソース・コードを独自の元のコードで置き換えることにより、「ソースの編集」オプションを使用することもできます。ただし、ヘビー・ハンドコーディング要件により、このシナリオはお薦めされません。

リソースのソース・コードを編集するには:

1. Frameworkアプリケーションで、リソース・マネージャにナビゲートします。詳細は、第16.3.2.1項「リソース・マネージャへのアクセス」を参照してください。

2. 左のパネルで、ソース・コードを編集するリソースのタイプを選択します。

3. 右のパネルで、ソース・コードを編集するリソースを選択します。

4. メニュー・バーの「編集」をクリックし、「ソースの編集」を選択します。

5. 「ソースの編集」ダイアログで、必要に応じてコードを編集します。
コードのXML構文が検証され、タグがないか、タグを不適切に追加している場合はエラー・メッセージが表示されます。CSSファイルなど、XML以外のファイルでは、検証は実行されません。

6. 「ソースの編集」をクリックします。

16.3.2.10 リソースのプロパティの設定

リソースの各タイプには、その表示プロパティ、可用性および属性を定義するプロパティが関連付けられます。認可ユーザーは、「プロパティの編集」ダイアログを使用して、実行時に作成またはアップロードされたリソースの、このようなプロパティを編集できます。ユーザーは、設計時に作成されたリソースのプロパティを編集することはできません。

リソースのプロパティを設定するには:

1. Frameworkアプリケーションで、リソース・マネージャにナビゲートします。詳細は、第16.3.2.1項「リソース・マネージャへのアクセス」を参照してください。

2. 左のパネルで、プロパティを設定するリソースのタイプを選択します。

3. 右のパネルで、プロパティを設定するリソースを選択します。

4. メニュー・バーの「編集」をクリックし、「プロパティの編集」を選択します。

5. 「表示名」フィールドで、リソースの表示名を編集します。

6. 「説明」フィールドで、リソースの説明を編集します。

7. 「URIアイコン」フィールドに、たとえば次のような、リソースを表すアイコンへの標準URIパスを入力します。

/myCompany/webcenter/page/images/myimage.png

絶対URLを指定することも、アプリケーション内のいずれかの場所に配置されているイメージを指す相対URLを指定することもできます。

8. 「カテゴリ」フィールドに、アプリケーション内でのリソースの分類に役立つカテゴリ名を入力します。

9. 「属性」セクションで、属性の「名前」および適切な「値」を入力することによって、リソースのカスタム属性の値を入力します。異なるリソースに追加可能なカスタム属性の詳細は、表16-1にリストされるリソースのタイプに該当する章を参照してください。

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

16.3.2.11 リソースのプレビュー

ページ・テンプレート、マッシュアップ・スタイルおよびタスク・フローをプレビューして、編集時に外観がどのようになっているかを確認できます。

リソースをプレビューするには:

1. Frameworkアプリケーションで、リソース・マネージャにナビゲートします。詳細は、第16.3.2.1項「リソース・マネージャへのアクセス」を参照してください。

2. 左のパネルで、プレビューするリソースのタイプを選択します。

3. 右のパネルで、プレビューするリソースを選択します。

4. メニュー・バーの「プレビュー」をクリックします。

5. リソースのプレビューを終了したら、「閉じる」をクリックします。

16.4 リソースのラウンドトリップ開発の有効化

ポータル・リソースの実行時管理を有効にするには、これらのリソースをJDeveloperにプルして戻すことが可能である必要があります。たとえば、ポータル・ユーザーが新規ナビゲーション・モデルを追加したときに、開発者がそれをさらに調整できます。これを実行するには、リソース・マネージャを使用して、デプロイ済アプリケーションからリソースをダウンロードする必要があります。ダウンロード後に、リソースをJDeveloperにインポートし、開発作業を実行し、リソースをエクスポートして、最終的にデプロイ済アプリケーションにアップロードして戻します。これは、ラウンドトリップ開発と呼ばれます。

このプロセスは、WebCenter Portal: Spacesを含め、リソース・マネージャが組み込まれているあらゆるデプロイ済WebCenter Portalアプリケーションのリソースに対して実行できます。

注意:

WebCenter Portalには特別なJDeveloperワークスペース(DesignWebCenterSpaces.jws)が用意されており、リソースを開発してWebCenter Portal: Spacesにアップロードする際に利用できます。第55章「JDeveloperを使用したSpacesアプリケーションの拡張」には、サンプルのワークスペースの場所、およびWebCenterSpacesResourcesプロジェクトを使用してWebCenter Portal: Spacesで使用するリソースを作成する方法が記載されています。

ラウンドトリップ開発のプロセスは、次のように機能します。

1. JDeveloperでFrameworkアプリケーションを作成します

2. アプリケーションをデプロイします

3. ユーザーが実行時にリソースを追加または編集し、ポータルにコンテンツを追加します

4. リソース・マネージャを使用して、EARファイルにリソースをダウンロードします。
第16.4.1項「リソース・マネージャを使用してリソースをダウンロードする方法」を参照してください。

5. EARファイルをJDeveloperにインポートします
第16.4.2項「ポータル・リソースをJDeveloperにインポートする方法」を参照してください。

6. JDeveloperでリソースを編集します

7. リソースをEARファイルにエクスポートします
第16.4.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

8. リソース・マネージャを使用して、デプロイ済アプリケーションにリソースをアップロードします
第16.4.4項「リソース・マネージャを使用してリソースをアップロードする方法」を参照してください。

9. 手順3から繰り返します。

さらに、アプリケーションのデプロイ後に、開発者はJDeveloperで引き続きリソースを作成および編集することができ、それらのリソースをデプロイ済アプリケーションに定期的にアップロードできます。

図16-4は、前述のラウンドトリップ開発プロセスを示しています。

図16-4 ラウンドトリップ開発

「図16-4 ラウンドトリップ開発」の説明

この項には次のサブセクションが含まれます:

- 第16.4.1項「リソース・マネージャを使用してリソースをダウンロードする方法」

- 第16.4.2項「ポータル・リソースをJDeveloperにインポートする方法」

- 第16.4.3項「ポータル・リソースをJDeveloperからエクスポートする方法」

- 第16.4.4項「リソース・マネージャを使用してリソースをアップロードする方法」

16.4.1 リソース・マネージャを使用してリソースをダウンロードする方法

リソースをJDeveloperで編集する場合、まず、デプロイ済アプリケーションでリソース・マネージャを使用して、リソースのメタデータすべてを格納するEARファイルを作成する必要があります。

リソースをダウンロードするには:

1. Frameworkアプリケーションで、リソース・マネージャにナビゲートします。詳細は、第16.3.2.1項「リソース・マネージャへのアクセス」を参照してください。

2. 左のパネルで、ダウンロードするリソースのタイプを選択します。

3. 右のパネルで、ダウンロードするリソースを選択します。

4. メニュー・バーの「ダウンロード」をクリックします。

ヒント:

「ダウンロード」メニュー・オプションは、データ・コントロールに使用できません。

5. 「ダウンロード」ダイアログ(図16-5)の「アーカイブ・ファイル名」フィールドに、エクスポート・アーカイブ(EAR)ファイルの名前を入力します。

6. エクスポート・アーカイブ・ファイルの保存先を指定します。

- 自分のコンピュータに保存 - クリックすると、ローカル・ファイル・システムにエクスポート・アーカイブ・ファイルが保存されます。

- WebCenter Portalサーバーに保存 - クリックすると、リモート・サーバー・ファイル・システムにエクスポート・アーカイブ・ファイルが保存されます。「パス」フィールドに、サーバー・パスを入力します。

図16-5 リソースのダウンロードのダイアログ

「図16-5 リソースのダウンロードのダイアログ」の説明

7. 「ダウンロード」をクリックします。
「自分のコンピュータに保存」を選択した場合、ファイルの保存と保存先の選択を要求される場合があります。

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

EARファイルを保存したら、今度はそれをJDeveloperにインポートする必要があります。JDeveloperでは、そのファイルを編集できます。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用しているアプリケーションまたは適切なテクノロジ・スコープが含まれるアプリケーションにリソースをインポートする必要があります。

注意:

ポータル・リソースをJDeveloperにインポートする場合、リソースがすでに存在するときは、JDeveloper内のリソースがアーカイブからのリソースで上書きされます。元のリソースは一時的な場所に保存され、それはログで確認できます。

ポータル・リソースをJDeveloperにインポートするには:

1. アプリケーション・ナビゲータで、リソースのインポート先のアプリケーションの「ポータル」プロジェクトを右クリックして、「ポータル・リソースのインポート」を選択します。

2. 「ポータル・リソースのインポート」ダイアログ(図16-6)の「インポート・アーカイブ・ファイル名」フィールドで、インポートするリソースが含まれるアーカイブ・ファイルを入力するか参照します。

図16-6 「ポータル・リソースのインポート」ダイアログ

「図16-6 「ポータル・リソースのインポート」ダイアログ」の説明

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

4. 選択したアーカイブ・ファイルにコンテンツ・ディレクトリが含まれる場合、ポップアップ・ダイアログで既存のターゲット・コンテンツ・ディレクトリをアーカイブ・ファイルからのコンテンツ・ディレクトリで上書きするかどうか尋ねられます。「はい」をクリックすると、ターゲット・コンテンツ・ディレクトリが、アーカイブ・ファイルからのコンテンツ・ディレクトリで上書きされます。「いいえ」をクリックすると、ターゲット・コンテンツ・ディレクトリが、アーカイブ・コンテンツ・ディレクトリからの新規ファイル、つまりターゲット・ディレクトリにはまだ存在しないファイルのみで更新されます。
インポートされたリソースが次の場所に作成されます。

Application_Root/Portal/oracle/webcenter/siteresources/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed

リソースは、ポータル・リソースとして自動的に作成されます。

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

リソースの編集後に、それをエクスポートして、デプロイ済アプリケーションにアップロード可能なEARファイルを作成する必要があります。

注意:

インポートした実行時作成リソースの依存オブジェクトを編集または追加する場合、これらのオブジェクトは、次のパスに配置する必要があります。このパスは、実行時に作成されるリソースのデフォルトのコンテンツ・ディレクトリです。

/oracle/webcenter/siteresources/scopedMD/shared

依存オブジェクトは常に、ポータル・リソースのコンテンツ・ディレクトリとして設定されているディレクトリのサブディレクトリの下または中に直接配置する必要があります。コンテンツ・ディレクトリ・パスは、「ポータル・リソースの更新」ダイアログにあります。

競合が生じないように、依存オブジェクトをsharedディレクトリの下のサブディレクトリ内に配置できます。たとえば、Template1という名前のページ・テンプレートのイメージをpageTemplatesサブディレクトリに格納できます。この場合、新しい場所を指すようにコンテンツ・ディレクトリ・パスを更新する必要があります。

ポータル・リソース内の依存オブジェクトは、次の例で示すように参照できます。

<af:image source="/oracle/webcenter/siteresources/scopedMD/shared/pageTemplates/Template1/logo1.gif" id="pt_12">

ポータル・リソースをJDeveloperからエクスポートするには:

1. アプリケーション・ナビゲータで、エクスポートするリソースを右クリックし、「ポータル・リソースのエクスポート」を選択します。

注意:

ポップアップ・メニューに「ポータル・リソースのエクスポート」オプションが表示されない場合は、そのリソースがポータル・リソースではないということです。リソースをポータル・リソースとして作成する方法は、第16.2.1項「リソースをリソース・マネージャに追加する方法」を参照してください。

2. 「ポータル・リソースのエクスポート」ダイアログ(図16-7)の「エクスポート・アーカイブ・ファイル名」フィールドで、エクスポート・ファイルのパスおよびファイル名を入力するか参照します。
既存のファイルを選択した場合、そのファイルのコンテンツは上書きされます。

図16-7 「ポータル・リソースのエクスポート」ダイアログ

「図16-7 「ポータル・リソースのエクスポート」ダイアログ」の説明

3. エクスポート・アーカイブ・ファイルに、リソースのコンテンツ・ディレクトリとして識別されるディレクトリを含める場合は、「コンテンツ・ディレクトリを含める」を選択します。

注意:

このチェック・ボックスは、有効なコンテンツ・ディレクトリを指しているポータル・リソースの場合にのみ表示されます。

リソース・コンテンツ・ディレクトリ全体がエクスポート・アーカイブ・ファイルに含まれます。個々のファイルを選択することはできません。インポート時に、コンテンツ・ディレクトリがアーカイブ・ファイルで検出される場合、ユーザーはターゲット・ディレクトリ内のすべてのファイルを上書きするか、新しいファイルを追加するかどうかを指定できます。

4. 「OK」をクリックします。
エクスポート・アーカイブには、リソースを構成するファイルが含まれます。たとえば、JSPXファイル、ページ定義、(オプションで)空でない場合は、リソースによってポイントされるコンテンツ・ディレクトリなど。アーカイブには、generic-site-resources.xmlファイルおよびエクスポートされたリソースに関する情報のみが含まれるレジストリ・ファイルも含まれています。

16.4.4 リソース・マネージャを使用してリソースをアップロードする方法

最後の手順では、更新済リソースのEARファイルを取得し、リソース・マネージャを使用してリソースをデプロイ済アプリケーションにアップロードして戻します。

リソースをアップロードするには:

1. Frameworkアプリケーションで、リソース・マネージャにナビゲートします。詳細は、第16.3.2.1項「リソース・マネージャへのアクセス」を参照してください。

2. 左のパネルで、アップロードするリソースのタイプを選択します。

3. メニュー・バーの「アップロード」をクリックします。

ヒント:

「アップロード」メニュー・オプションは、データ・コントロールに使用できません。

4. 「アップロード」ダイアログ(図16-8)で、リソース・アーカイブ・ファイルの場所を指定します。EARファイルの場所に基づいて、次のいずれかを選択します。

- 自分のコンピュータで表示 - アーカイブがローカル・ファイル・システムに配置されている場合に選択します。EARファイルへのパスを入力するか、「参照」ボタンを使用します。

- WebCenter Portalサーバーで表示 - アーカイブがリモート・サーバーに配置されている場合に選択します。EARファイルへのパスを入力します。

図16-8 リソースのアップロードのダイアログ

「図16-8 リソースのアップロードのダイアログ」の説明

5. 「アップロード」をクリックします。

6. 「置換の確認」ダイアログで「はい」をクリックします。

7. エクスポート・アーカイブ・ファイルにコンテンツ・ディレクトリが含まれている場合、「コンテンツ・ディレクトリの上書き」ダイアログが表示されます。エクスポート・アーカイブのコンテンツ・ディレクトリからすべてのファイルをインポートする場合は「はい」をクリックし、コンテンツ・ディレクトリから新規ファイルのみをインポートする場合は「いいえ」をクリックします。

第III部

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

第III部の内容は次のとおりです。

- 第17章「コンポーザの概要」

- 第18章「ページの実行時作成および管理の有効化」

- 第19章「コンポーザを使用したページの実行時編集の有効化」

- 第20章「コンポーザを使用した実行時編集機能の拡張」

- 第21章「コンポーザの拡張構成の実行」

- 第22章「コンポーザ固有のMDS構成の実行」

- 第23章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」

- 第24章「タスク・フローのカスタマイズ」

17 コンポーザの概要

Oracle WebCenter Portalのコンポーザは、アプリケーション実行時にページ・コンテンツを追加および編集するための完全に統合されたページ・エディタです。この章では、コンポーザについて概説し、実行時にサポートする様々なタスクについて説明します。

コンポーザの機能を理解するには、まず、次のステージから構成される、典型的なアプリケーション開発ライフサイクルを確認します。

- アプリケーション開発者は、設計時にアプリケーションを作成します。
設計時とは、従来、アプリケーションを作成または編集するためのIDEベースの環境を表します。WebCenter Portalの場合、Oracle JDeveloperが設計時環境を提供します。

- アプリケーション管理者は、これらのアプリケーションをマネージド・サーバーにデプロイします。

- エンド・ユーザーは、実行時にデプロイされたアプリケーションにアクセスします。
実行時とは、Webアプリケーションにアクセスするために使用されるブラウザ・ベースの環境を表します。

各ステージに異なるカテゴリのユーザーが関与することがわかります。多くの場合、これらのユーザーの一部またはすべてが実行時にページを変更する必要があります。たとえば、ワークリストやメール・タスク・フローなどの、ログイン・ユーザーに関する情報を表示するダッシュボードのようなアプリケーションについて考えてみます。ページ開発者は、ダッシュボード・ページを作成し、これに必要なコンポーネントおよびタスク・フローを移入します。アプリケーション管理者は、アプリケーションを顧客のサイトにデプロイします。顧客のサイトでは、組織の様々なレベルの人がダッシュボードを表示し、次のリクエストを行います。

- 部門の管理者は、「部門ニュース」タスク・フローを追加します。

- LOB管理者は、「個人/役職者が使用する経費」タスク・フローを追加します。

- 国のサイト管理者は、それぞれの国の運営または規則を表示するタスク・フローを追加します。

また、コンテンツ・コントリビュータ、モデレータおよびエンド・ユーザーは、ビジネス・ニーズに基づいてページ・アーティファクトを追加、削除または変更します。典型的なアプリケーション開発環境では、これらのリクエストはページ開発者に渡されます。開発者は、開発環境でアプリケーションを変更し、これを顧客のサイトに再デプロイします。

単純な変更を開発者に戻すのではなく、コンポーザはMetadata Services (MDS)とともに、ビジネス・ユーザーが実行時にアプリケーション・ページを編集できる編集ツールを提供します。実行時に行われた変更はメタデータとして保存され、ベースのアプリケーション定義から隔離されます。実行時にアプリケーション・ページを編集するこの概念は、実行時に設計と呼ばれます。これは、設計時にアプリケーションを変更してこれを再デプロイする必要を最小化します。

コンポーザは、実行時にアプリケーション設計を行う動作を制御するコンポーネントを提供します。この章では、コンポーザを有効に使用するために必要な基本的な概念および用語について説明します。次のサブセクションが含まれます:

- 第17.1項「アプリケーションのカスタマイズとユーザーのカスタマイズ」

- 第17.2項「ページの表示モードと編集モード」

- 第17.3項「ページ表示モードでのカスタマイズ機能」

- 第17.4項「ページ編集モードの「デザイン」ビューでの編集機能」

- 第17.5項「ページ編集モードの「ソース」ビューでの編集機能」

- 第17.6項「コンポーザ・コンポーネント」

- 第17.7項「セキュリティおよびコンポーザ」

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

ユーザーが実行時にページを変更すると、通常その変更はそのユーザーのみが使用できます。アプリケーションを構成して、ページにアクセスするすべてのユーザーまたはユーザーのサブセットが実行時の変更を使用できるようにすることができます。LOBのメンバーが使用する経費の詳細を表示するダッシュボード・ページの例について考えてみます。LOB管理者がページを変更し、いくつかの経費に関するガイドラインを追加する場合、その変更はすべてのメンバーに表示される必要があります。そのような要件に対処するために、コンポーザでは、ユーザーはページを異なるモードで編集し、変更をユーザーのカスタマイズ(ページの個々のユーザーの表示のみに影響)またはアプリケーションのカスタマイズ(全員のページの表示に影響)として保存できます。

ユーザーの変更をユーザーのカスタマイズまたはアプリケーションのカスタマイズとして保存するには、これらをバックエンドで別々に保存する必要があります。メタデータ・ドメインでは、MDSは、ベース・アプリケーション定義の上の別々のレイヤーにカスタマイズを保存することを許可しています。ビジネス要件に応じて、単一のレイヤーまたは複数のレイヤーに変更を保存できます。

単一レイヤー構成では、変更は、アプリケーションのカスタマイズとしてすべてのユーザーがアクセスできる共通レイヤーに保存されます。この場合、変更をユーザーのカスタマイズとして保存することはできません。

複数レイヤー構成では、変更は、ページが編集されたモード、ページを編集したユーザー、ユーザー・ロールなどの指定された条件に基づいて個別の場所に保存されます。この種の構成では、各カスタマイズ・レイヤーは他のレイヤーから隔離されますが、レイヤーを相互に積み重ねてアップグレード時に柔軟性を持たせることができます。たとえば、ユーザーが、表示されるページのデフォルトのテーマを変更する必要があるとします。この変更は、ページの他者の表示に影響を与えずに、このユーザーに対してのみ保存されることが期待されているとします。したがって、このページのパーソナライズ権限を持っているエンド・ユーザーによって行われる変更がユーザーのカスタマイズとして保存され、カスタマイズレベル権限を持っているログイン・ユーザーによって行われる変更がアプリケーションのカスタマイズとして保存されるように設定できます。パーソナライズ権限とカスタマイズ/編集権限を持つユーザーが使用できるタスクをそれぞれ決定できます。

MDSおよびカスタマイズ・レイヤーの詳細は、第22.1項「MDSの概要」を参照してください。

17.2 ページの表示モードと編集モード

ユーザーがブラウザでアプリケーション・ページを開くと、ページは表示モードで開きます。また、コンポーザは編集モードという別のモードへのアクセスを提供し、適切な権限を持つユーザーはアプリケーション・ページを編集できます。これらのモードは次のように説明できます。

- 表示モード - ブラウザで開いたときのページのデフォルト表示。このモードでは、ユーザーは、コンポーネントの再配置、コンポーネントの折りたたみと展開およびレイアウトの変更などのタスクを実行できます。通常、表示モードでページに対して行われる変更はそのユーザーのみが使用でき、ユーザーのカスタマイズとして保存されます。

- 編集モード - 通常このモードは、アクセス権限を持つ認証されたユーザーが使用してページ・コンテンツを編集できます。表示モードで実行できるタスクに加えて、コンポーザは、編集モードへの切り替えおよびコンポーネントの追加、コンポーネントの削除、コンポーネントのプロパティの編集などのタスクの実行のための制御を提供します。通常、編集モードでページに対して行われる変更はアプリケーションのカスタマイズとして保存され、そのページにアクセスするすべてのユーザーが使用できます。

17.3 ページ表示モードでのカスタマイズ機能

コンポーザより、ユーザーは表示モードと編集モードでページをカスタマイズできます。この項では、ページ表示モードでユーザーが可能なユーザー・カスタマイズ・タスクの概要について説明します。このようなタスクには、コンポーネントの再配置、コンポーネントの折りたたみと展開およびページ・レイアウトの変更などがあります。この項で説明する機能を有効にするには、次のコンポーザの設計時コンポーネントをページに追加します: Panel Customizable、Show Detail Frame、Custom ActionsおよびLayout Customizable。これらのコンポーネントの詳細は、第17.6項「コンポーザ・コンポーネント」を参照してください。表示モードのページに対して行われた変更はこれらの変更を行うユーザーのみが使用できます。

この項には次のサブセクションが含まれます:

- 第17.3.1項「コンポーネントの再配置」

- 第17.3.2項「レイアウトの変更」

- 第17.3.3項「コンポーネントの展開と縮小」

注意:

ページで実行できる編集タスクの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページの作成に関する項を参照してください。

17.3.1 コンポーネントの再配置

この機能では、ユーザーは、最も役に立つコンテンツがページの上部に表示されるようにページのコンポーネントを編成できます。ユーザーは、次の2つの方法でコンポーネントを再配置できます。

- ドラッグ・アンド・ドロップ
ユーザーは、ページのPanel Customizableコンポーネント内またはPanel Customizableコンポーネント間でコンポーネントをドラッグ・アンド・ドロップしてこれを再配置できます。編集モードでPanel Customizableコンポーネントを識別するのは困難であるため、ユーザーは単純にコンポーネントを配置したい場所にドラッグできます。実線のボックスはドロップできる場所を示します。

- 「アクション」メニューの使用
Show Detail Frameコンポーネントまたはポートレット・コンポーネントの移動アクションでは、ユーザーは、これらのコンポーネントを親のPanel Customizableコンポーネント内で移動できます。Panel Customizableに複数の子コンポーネントがある場合、子のShow Detail Frameまたはポートレットを他の子コンポーネントの位置に対して左右または上下に移動できます。図17-1は、「上へ移動」および「下へ移動」アクションを含むサンプルのShow Detail Frameコンポーネントを示します。この例では、「下へ移動」を選択すると、Latest NewsコンポーネントがPress Releaseコンポーネントの真下に移動します。

図17-1 Show Detail Frameの「アクション」メニュー

「図17-1 Show Detail Frame上の「アクション」メニュー」の説明

17.3.2 レイアウトの変更

この機能では、ユーザーは、コンポーザに用意されている一連の事前定義済のレイアウトを切り替えることができます。「レイアウトの変更」アイコンを使用して、ユーザーはニーズや好みに合せて8つの異なるレイアウトから選択できます。コンポーザ・ライブラリのLayout Customizableコンポーネントは、図17-2に示すようにページの「レイアウトの変更」アイコンの表示を有効にします。

図17-2 「レイアウトの変更」アイコン

「図17-2 「レイアウトの変更」アイコン」の説明

図17-3は、Layout Customizableコンポーネントで使用可能なレイアウト・オプションを示しています。ページまたは領域に現在適用されているレイアウトは、グレーの境界線で強調表示されています。

図17-3 レイアウト オプション

「図17-3 レイアウト オプション」の説明

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

ページでコンポーネントの展開と縮小を有効にすることによって、外観を損ねることなくページにより多くの詳細情報を含めることができます。ユーザーは、必要に応じてコンポーネントを縮小したり展開したりできます。

Show Detail Frameまたはポートレットの「縮小」アイコンを使用すると、ユーザーはそのコンポーネントを縮小し、そのヘッダーのみを表示できます。図17-4は、3つのShow Detail Frameコンポーネントの「縮小」アイコンを示しています。

図17-4 Show Detail Frameの「縮小」アイコン

「図17-4 Show Detail Frameの「縮小」アイコン」の説明

縮小されたコンポーネントで「展開」アイコンを使用すると、ユーザーはコンポーネントがヘッダーとコンテンツを表示するようにこれを展開できます。図17-5は、2つの閉じられたShow Detail Frameコンポーネントの「展開」アイコンを示しています。

図17-5 Show Detail Frameの「展開」アイコン

「図17-5 Show Detail Frameの「展開」アイコン」の説明

17.4 ページ編集モードの「デザイン」ビューでの編集機能

コンポーザの編集モードには、広範なアプリケーションのカスタマイズ機能が用意されています。編集モードでは、ユーザーは、コンテンツの追加、ページとコンポーネントのプロパティの編集、コンポーネントの削除、コンポーネントの再配置、ページ・レイアウトの変更などを行えます。

この項で説明する機能をアプリケーションに提供するには、次のコンポーザの設計時コンポーネントをページに追加します: Change Mode LinkまたはChange Mode Button、Page Customizable、Panel Customizable、Show Detail Frame、Custom ActionsおよびLayout Customizable。これらのコンポーネントの詳細は、第17.6項「コンポーザ・コンポーネント」を参照してください。

Change Mode LinkまたはChange Mode Buttonは、ページを編集モードに切り替えます。編集モードでは、ユーザーは、コンテンツのページへの追加、コンポーネント・プロパティの編集、ページ・プロパティの編集などを行えます。ページのPage Customizableコンポーネントでは、これらの編集機能を使用できます。

図17-6は、アプリケーション・ページのChange Mode Linkを示しています。ユーザーがChange Mode LinkまたはChange Mode Buttonをクリックすると、コンポーザでページが開かれます。

図17-6 表示モードでの「編集」リンク

「図17-6 表示モードでの「編集」リンク」の説明

デフォルトのコンポーザのツールバーには、編集されるページの名前、ステータス・インジケータ、「表示」メニュー、「ページ・プロパティ」ボタン、「ページのリセット」ボタンおよび「閉じる」アイコンが表示されています。「表示」メニュー(図17-7)には、2つの表示オプション「デザイン」と「ソース」が用意されています。ユーザーは、これらの表示で様々な編集タスクを実行できます。

図17-7 コンポーザの「表示」メニュー

「図17-7 コンポーザの「表示」メニュー」の説明

「デザイン」ビュー(図17-8)では、ページとコンテンツがWYSIWYGで表示され、各コンポーネントの「編集」および「削除」の各制御を直接選択できます。「デザイン」ビューでは、ユーザーは、コンテンツの追加、ページおよびコンポーネントのプロパティの編集、ページ・レイアウトの変更、コンポーネントの削除などのタスクも実行できます。

図17-8 ページの「デザイン」ビュー

「図17-8 ページの「デザイン」ビュー」の説明

「ソース」ビューの詳細は、第17.5項「ページ編集モードの「ソース」ビューでの編集機能」を参照してください。

この項では、コンポーザがページ編集モードの「デザイン」ビューで提供する編集機能について説明します。内容は、次のとおりです。

- 第17.4.1項「コンテンツの追加」

- 第17.4.1.2項「既存のコンポーネントに隣接するボックス・コンポーネントの追加」

- 第17.4.2項「ページ・コンテンツの再配置」

- 第17.4.3項「コンポーネントのプロパティおよびパラメータの編集」

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

- 第17.4.5項「リソース文字列の編集」

- 第17.4.6項「コンポーネントの表示または非表示」

- 第17.4.7項「コンポーネントの削除」

- 第17.4.8項「レイアウトの変更」

- 第17.4.9項「ページ・プロパティの編集」

- 第17.4.10項「ページ・パラメータへのコンポーネントの関連付け」

- 第17.4.11項「ページのリセット」

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

- 第17.4.14項「アプリケーションのカスタマイズの管理」

注意:

アプリケーションを保護し、コンポーネントにカスタマイズ制限を適用することによって、ユーザーがこれらのタスクのすべてまたは一部を実行できないように制限することができます。詳細は、第17.7項「セキュリティおよびコンポーザ」を参照してください。

コンポーザは、「ソース」ビューにもこれらの機能のほとんどを用意しています。各項では、機能が両方のモードで使用可能か、設計モードでのみ使用可能かを記述しています。

ユーザーがページで実行できる実行時編集タスクの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページの作成に関する項およびページ・レイアウトのコンポーネントの追加と構成に関する項を参照してください。

17.4.1 コンテンツの追加

ユーザーは、ニュースや株式の最新情報を表示するポートレットなどのページにカスタム・コンテンツを追加する必要がある場合があります。コンポーザでは、ユーザーは、ページの「デザイン」ビューおよび「ソース」ビューの任意のコンテナ内にコンテンツを追加できます。WebCenter Portalのリソース・カタログ(Oracle Business Dictionaryとも呼ばれる)には、ユーザーがページに追加できるリソースが含まれています。これらには、ドキュメント、Oracle ADFコンポーネント、ポートレットおよびタスク・フローが含まれています。カタログは次の方法で起動できます。

- 「デザイン」ビューで、ページの任意のコンテナ・コンポーネントの「コンテンツの追加」ボタンをクリックします。

- 「ソース」ビューで、コンテナ・コンポーネントを選択し、「ソース」ビュー・ツールバーで「コンテンツの追加」ボタンをクリックします。

注意:

コンテナ・コンポーネントのカスタマイズを制限している場合、ユーザーは、実行時にこの内部にコンポーネントを追加できません。詳細は、第23.1項「カスタマイズ・ポリシーの定義によるコンポーネント・レベルの制限の適用」を参照してください。

図17-9は、ポータル機能で構成されていないFrameworkアプリケーションで使用可能なデフォルトのカタログを示しています。

図17-9 リソース・カタログ

「図17-9 リソース・カタログ」の説明

リソース・カタログにはフォルダとコンポーネントが含まれています。カタログのアイテムの隣にある「開く」リンクは、アイテムがフォルダであることを示しています。ユーザーは、このリンクをクリックしてフォルダをドリルダウンできます。アイテムの隣にある「追加」リンクは、アイテムをページに追加できることを示しています。「追加」リンクは、コンポーネントまたはフォルダの隣に表示されます。コンポーネントは、「コンテンツの追加」リンクがクリックされたコンテナに最初の子として追加されます。

注意:

リソース・カタログの「上」アイコンを使用すると、ユーザーは最上位フォルダに戻ることができます。

リソースをページに追加するためのドロップ・ハンドラを構成した場合、「追加」リンクに、コンポーネントをページに追加するためのものと異なるオプションを含むコンテキスト・メニューが表示されます(図17-10)。詳細は、第20.6項「コンポーザUIイベントのイベント・ハンドラの構成」を参照してください。

図17-10 コンポーネントを追加するためのドロップ・ハンドラがあるコンテキスト・メニュー

「図17-10 コンポーネントを追加するためのドロップ・ハンドラがあるコンテキスト・メニュー」の説明

構成に応じて、リソース・カタログはユーザーに対して次のコンポーネントのすべてまたはサブセットを公開します。

注意:

リソース・カタログの構成の詳細は、第15章「リソース・カタログの作成と管理」を参照してください。

- ADF Facesコンポーネント
ADF Facesコンポーネント・フォルダには、JDeveloperの設計時コンポーネントであるPanel CustomizableおよびShow Detail Frameと似ているBoxコンポーネントおよびMovable Boxコンポーネントが用意されています。JDeveloperでは、これらのコンポーネントは、コンポーザ・タグ・ライブラリで使用できます。

注意:

設計時にページに追加されたPanel CustomizableコンポーネントおよびShow Detail Frameコンポーネントは、引き続き同じ呼び名です。これらのコンポーネントは、実行時にそれぞれBoxコンポーネントおよびMovable Boxコンポーネントと表示されることはありません。

このフォルダには、JDeveloperの設計時コンポーネントであるGo Image Link、Output Text、Go Link、Rich Text EditorおよびInline Frameとそれぞれが似ているImage、HTML Markup、Hyperlink、TextおよびWeb Pageの各コンポーネントが用意されています。JDeveloperでは、これらのコンポーネントは、ADF Facesタグ・ライブラリで使用できます。

カタログの「ADF Facesコンポーネント」フォルダには、図17-11に示すようにこれらのコンポーネントが含まれています。

図17-11 ページに追加可能なADF Facesコンポーネント

「図17-11 ページに追加可能なADF Facesコンポーネント」の説明

- タスク・フロー
ユーザーは、カスタム・タスク・フローおよび即時利用可能なWebCenter Portalサービス・タスク・フローをページに追加できます。ページに追加されるタスク・フローは、Movable Boxコンポーネント内に自動的に含まれます。その結果、タスク・フローは、コンポーネントを移動または削除するためのオプション付きのヘッダーを表示します。

注意:

タスク・フローを囲んでいるMovable Boxコンポーネントは、そのタスク・フローがページで表示されている場合のみ表示されます。つまり、タスク・フローの表示権限すら付与しない場合、これを囲むMovable Boxもページで表示されません。

- ポートレット
ポートレット・フォルダは、登録済プロデューサをすべてリストします。ユーザーは必要なポートレットにナビゲートし、これをページに追加できます。ポートレット・フォルダは、Oracle JDeveloperで登録された任意のJava-PDKまたはWSRPプロデューサからポートレットを公開します。ポートレット・プロデューサの登録の詳細は、第62章「ポートレットの消費」を参照してください。

- ドキュメント
コンテンツ管理フォルダは、ユーザーがページに追加できるドキュメント・サービスのドキュメントおよびフォルダをリストします。

詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページ・レイアウトのコンポーネントの追加と構成に関する項を参照してください。

17.4.1.1 タブ・セットまたはタブのBoxコンポーネントへの追加

「ボックス」コンポーネントにあるツールバーには、タブまたはタブのセットをBoxコンポーネントに追加するオプション(図17-12)が用意されています。タブを使用して、ページの個別のレイヤーとしてコンテンツ・リージョンを追加します。新しいタブそれぞれが現在選択されたタブの下のレイヤーとして配置され、コンテンツを移入できるリージョンを含みます。

図17-12 「ボックス」コンポーネントにある「タブ・セットまたはタブの追加」アイコン

「図17-12 「ボックス」コンポーネントにある「タブ・セットまたはタブの追加」アイコン」の説明

ユーザーが「ボックス」コンポーネントにある「タブ・セットまたはタブの追加」アイコンをクリックすると、コンポーザはタブをBoxコンポーネントの周りに追加します。「ソース」ビューでは、図17-13に示すように、BoxコンポーネントがShow Detail Itemコンポーネント内にネストされていて、さらにこれがPanel Tabbedコンポーネント内にネストされています。ユーザーは、この方法で任意の数のタブを追加できます。

図17-13 「ソース」ビューのタブ・コンポーネント

「図17-13 「ソース」ビューのタブ・コンポーネント」の説明

ユーザーが最初に追加するタブは、選択したBoxコンポーネントを囲みます。その後の各タブは、新しいBoxコンポーネントをその内部に含みます。

ユーザーは、「デザイン」ビューのタブにある「削除」アイコンをクリックしてタブを削除できます。最後のタブを削除すると、Panel Tabbedコンポーネントがページから削除されます。または、「ソース」ビューでPanel Tabbedコンポーネントを削除してタブ・セットを削除できます。その内部にあるBoxを削除せずにタブのみを削除するには、ユーザーは、まずBoxをPanel Tabbedコンポーネントの外側に移動(切取りおよび貼付け)してからPanel Tabbedコンポーネントを削除する必要があります。

17.4.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コンポーネントが制限されている場合

詳細は、第23章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」を参照してください。

ユーザーは、「追加」アイコンを使用して追加したBoxコンポーネントを「デザイン」ビューと「ソース」ビューの両方で削除できます。

注意:

Panel Group LayoutにBoxコンポーネントが2つしかなく、その内の1つを削除すると、Panel Group Layoutも削除されます。

「ボックス」コンポーネントのツールバーには、編集アイコンに加えて次のボックス追加アイコンがあります。

- 上にボックスを追加

- 下にボックスを追加

- 左にボックスを追加

- 右にボックスを追加

17.4.1.2.1 上にボックスを追加

「上にボックスを追加」アイコン(図17-14)をクリックすると、Boxコンポーネントが選択したBoxコンポーネントの上に追加されます。Panel Group Layoutのlayout属性はverticalに設定されます。

図17-14 「ボックス」コンポーネントの「上にボックスを追加」アイコン

「図17-14 「ボックス」コンポーネントの「上にボックスを追加」アイコン」の説明

図17-15は、Boxコンポーネントの隣に別のBoxコンポーネントを追加する前の「ソース」ビューでのBoxコンポーネントの表示です。

図17-15 隣接する別のBoxコンポーネントを追加する前のBoxコンポーネント

「図17-15 隣接する別のBoxコンポーネントを追加する前のBoxコンポーネント」の説明

図17-16は、コンポーネント・ナビゲータで垂直に整列された2つのBoxコンポーネントを示しています。

図17-16 上に追加されたBoxコンポーネント

「図17-16 上に追加されたBoxコンポーネント」の説明

ユーザーは、「上にボックスを追加」アイコンを繰り返しクリックして、多くの連続したBoxコンポーネントを同じ親Panel Group Layoutの中に垂直に追加できます。

17.4.1.2.2 下にボックスを追加

「下にボックスを追加」(図17-17)をクリックすると、選択したBoxコンポーネントの下にBoxコンポーネントが追加されます。Panel Group Layoutのlayout属性はverticalに設定されます。

図17-17 「ボックス」コンポーネントの「下にボックスを追加」アイコン

「図17-17 「ボックス」コンポーネントの「下にボックスを追加」アイコン」の説明

図17-18は、コンポーネント・ナビゲータで垂直に整列された2つのBoxコンポーネントを示しています。

図17-18 下に追加された「ボックス」コンポーネント

「図17-18 下に追加された「ボックス」コンポーネントの」の説明

ユーザーは、「下にボックスを追加」アイコンを繰り返しクリックして、多くの連続したBoxコンポーネントを同じ親Panel Group Layoutの中に垂直に追加できます。

17.4.1.2.3 左にボックスを追加

「左にボックスを追加」アイコン(図17-19)をクリックすると、Boxコンポーネントが選択したBoxコンポーネントの左に追加されます。Panel Group Layoutのlayout属性はhorizontalに設定されます。

図17-19 「ボックス」コンポーネントの「左にボックスを追加」アイコン

「図17-19 「ボックス」コンポーネントの「左にボックスを追加」アイコン」の説明

図17-20は、コンポーネント・ナビゲータで水平に整列された2つのBoxコンポーネントを示しています。

図17-20 左に追加されたBoxコンポーネント

「図17-20 左に追加されたBoxコンポーネント」の説明

ユーザーは、「左にボックスを追加」アイコンを繰り返しクリックして、多くの連続したBoxコンポーネントを同じ親Panel Group Layoutの中に水平に追加できます。

17.4.1.2.4 右にボックスを追加

「右にボックスを追加」アイコン(図17-21)をクリックすると、Boxコンポーネントが選択したBoxコンポーネントの右に追加されます。Panel Group Layoutのlayout属性はhorizontalに設定されます。

図17-21 「ボックス」コンポーネントの「右にボックスを追加」アイコン

「図17-21 「ボックス」コンポーネントの「右にボックスを追加」アイコン」の説明

図17-22は、コンポーネント・ナビゲータで水平に整列された2つのBoxコンポーネントを示しています。

図17-22 右に追加されたBoxコンポーネント

「図17-22 右に追加されたBoxコンポーネント」の説明

ユーザーは、「右にボックスを追加」アイコンを繰り返しクリックして、多くの連続したBoxコンポーネントを同じ親Panel Group Layoutの中に水平に追加できます。

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

この機能では、たとえば、最も役に立つコンテンツがページの上部に移動できるように、最も簡単に使用できる場所に基づいて、ユーザーはページのコンポーネントを編成できます。「デザイン」ビューで、ユーザーは次の方法でページ上のコンテンツを再配置できます。

- ページにある同じPanel Customizableコンポーネント内またはPanel Customizable(あるいはBox)コンポーネントの間でコンポーネントをドラッグ・アンド・ドロップします。

- Show Detail Frameまたはポートレットの「アクション」メニューにある「移動」アクションを使用して、これを親Panel Customizableコンポーネント内で移動します。Panel Customizableコンポーネントの子コンポーネントの数、およびそれらのコンポーネントの向きに応じて、コンポーネントを左、右、上または下に移動できます。

- コンテナ内でコンポーネントを順序変更するには、コンテナの「コンポーネント・プロパティ」ダイアログで、「子コンポーネント」タブをクリックし、子コンポーネントそれぞれに表示される上下の矢印を使用します(図17-23)。

注意:

カスタマイズが制限されているコンポーネントは、その親がカスタマイズ可能である場合、その親コンテナ内で再配置できます。

「子コンポーネント」タブには、直接の子コンポーネントのリストをタブの上部に表示し(「コンポーネント」リスト)、次にそのコンポーネントに対して定義されたすべてのファセットのリストを表示します(「固定コンポーネント」リスト)。ファセット・コンポーネントは再配置できないため、これらのコンポーネントには上下の矢印はありません。「固定コンポーネント」リストは、コンポーネントにファセットが含まれている場合のみ表示されます。

図17-23 コンテナの「子コンポーネント」タブの順序変更オプション

「図17-23 コンテナの「子コンポーネント」タブの順序変更オプション」の説明

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

「コンポーネント・プロパティ」ダイアログを使用すると、ユーザーは、ポートレットやタスク・フローなどのコンポーネントに関連付けられたコンポーネントのプロパティおよびパラメータを編集できます。「コンポーネント・プロパティ」ダイアログは、「デザイン」ビューと「ソース」ビューの両方でアクセスできます。

注意:

コンポーネントは次の場合には編集できません。

- 設計時に、コンポーネントにId属性が設定されなかった場合

- コンポーネントまたはその属性のいずれかが制限されている場合
カスタマイズの制限の詳細は、第23章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」を参照してください。

- これがADF Facesライブラリのコンポーネントである場合

「デザイン」ビューで、コンポーネントの「編集」アイコンをクリックすると、図17-24に示すように「コンポーネント・プロパティ」ダイアログが表示されます。

図17-24 「コンポーネント・プロパティ」ダイアログ

「図17-24 「コンポーネント・プロパティ」ダイアログ」の説明

「表示オプション」タブでは、ユーザーは、背景やタイトルなどの視覚的なプロパティを編集できます。

「パラメータ」タブ(図17-25)では、ユーザーは、ポートレットやタスク・フローなどのコンポーネントのパラメータを編集できます。

図17-25 「コンポーネント・プロパティ」ダイアログの「パラメータ」タブ

「図17-25 「コンポーネント・プロパティ」ダイアログの「パラメータ」タブ」の説明

「コンポーネント・プロパティ」のカスタマイズの視覚的な意味

「表示オプション」タブにあるプロパティの隣のアイコンは、プロパティが実行時に編集されたことを意味します。2つの異なるアイコンが使用され、現在のコンテキストおよび異なるレイヤーで行われた変更を示します。図17-26は、プロパティが更新されたことを示すために使用される2つの異なるアイコンを示しています。

注意:

プロパティのカスタマイズの視覚的意味は、アプリケーションで複数のカスタマイズ・レイヤーを構成した場合のみ関係します。詳細は、第22.3項「カスタマイズ・レイヤーの表示モードおよび編集モードへの追加: 例」を参照してください。

図17-26 プロパティのカスタマイズの視覚的意味

「図17-26 プロパティのカスタマイズの視覚的意味」の説明

「コンポーネント・プロパティ」ダイアログでは、ユーザーは、現在のコンテキストの視覚的プロパティをリセットすることもできます。詳細は、第17.4.4項「現在のレイヤーのコンポーネント・プロパティのリセットとオーバーライド」を参照してください。

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

ユーザーは、現在のレイヤーのコンポーネント・プロパティに対して行ったアプリケーションのカスタマイズをリセットおよびオーバーライドできます。「コンポーネント・プロパティ」ダイアログには、「コンポーネント・プロパティ」ダイアログのパネルにある特定のプロパティまたはすべてのプロパティをリセットするオプションが用意されています。

プロパティのコンテキスト・メニューにある「オーバーライド」オプション(図17-27)を使用すると、ユーザーは、別のレイヤーの値を現在のレイヤーの固定値として使用できます。たとえば、ユーザーは、レイヤーXのMovable BoxコンポーネントにあるShort Descプロパティを編集して、これをFirst Frameに設定します。別のレイヤーYでこのコンポーネントを編集しているユーザーは、First FrameをレイヤーYのShort Descの固定値として選択できます。レイヤーYのこのコンポーネントにアクセスしているすべてのユーザーには、今後この値が表示されます。Short Descの値は、レイヤーXでこの値が変更されてもレイヤーYでは変更されません。ユーザーがプロパティに値を入力すると、そのプロパティの「オーバーライド」オプションはグレー表示されます。

図17-27 「コンポーネント・プロパティ」ダイアログの「リセット」オプションと「オーバーライド」オプション

「図17-27 「コンポーネント・プロパティ」ダイアログの「リセット」オプションと「オーバーライド」オプション」の説明

プロパティのコンテキスト・メニューにある「リセット」オプションを使用すると、ユーザーは、そのプロパティを元の状態にリセットできます。プロパティがそのレイヤーで編集されたことがない場合、またはユーザーがそのプロパティを表示された値(別のレイヤーから取得)でオーバーライドすることを選択した場合、「リセット」オプションはグレー表示されます。

「すべてリセット」ボタンを使用すると、ユーザーは、「表示オプション」タブにあるすべてのプロパティをリセットできます。ユーザーは、「表示オプション」タブでレンダリングされた視覚的なプロパティに適用されたアプリケーションのカスタマイズのみをリセットできます。

注意:

「リセット」オプションと「すべてリセット」ボタンは、コンポーネントが新しく作成された場合または現在のレイヤーで変更された属性がない場合には使用できません。

17.4.5 リソース文字列の編集

コンポーザで編集されたコンポーネント・プロパティは、現在の言語でのみ使用できます。たとえばタスク・フローをページに追加する場合、コンポーザで入力するタスク・フロー・タイトルは現在の言語でのみ使用可能です。そのため、別のロケールのユーザーには、そのようなプロパティの翻訳された値が表示されません。実行時に編集されたコンポーネント・プロパティの言語サポートを提供するために、コンポーザではユーザーは、文字列値を取るプロパティのリソース文字列を編集できます。これは、JDeveloperが提供するリソース文字列エディタ機能に似ています。コンポーザでリソース文字列に対して行った変更は、アプリケーション・オーバーライド・バンドルに保存されます。バンドルは翻訳に送られ、翻訳されたバージョンがアプリケーションに戻されます。こうして、ユーザーは自身の言語でプロパティ値を表示できます。

オーバーライド・バンドルおよび既存(リリース11.1.1)のFrameworkアプリケーションでのリソース文字列編集の構成の詳細は、第21.12項「実行時リソース文字列編集の構成」を参照してください。

実行時、文字列値を取ることができるコンポーネント表示オプションについては、プロパティ・フィールドの隣の「編集」メニューで、図17-28に示すように、「テキスト・リソースの選択」オプションが提供されます。ユーザーは、このオプションを選択して、プロパティのリソース文字列を編集できます。

図17-28 属性の「テキスト・リソースの選択」オプション

「図17-28 属性の「テキスト・リソースの選択」オプション」の説明

「テキスト・リソースの選択」ダイアログ(図17-29)には、既存のリソースを検索するオプション、リソース・キーを編集または削除するオプションおよび新しいリソース・キーと値のペアを追加するオプションが用意されています。

図17-29 「テキスト・リソースの選択」ダイアログ

「図17-29 「テキスト・リソースの選択」ダイアログ」の説明

「テキスト・リソースの選択」ダイアログは、次のものを表示します。

- 「キー」フィールド: 新しいキー名の指定または既存の名前の変更を行います。これは、リソース・バンドルのロケール固有のオブジェクトを一意に識別するために使用される文字列値です。
このキー名には、リソースが属しているMDSレイヤーが自動的に接頭辞として付いています。この接頭辞は、実行時に作成されたキーと設計時に作成されたキーを区別する際に役に立ちます。

既存のキーに対して表示される「編集」アイコンと「新規キー/値」アイコン(図17-30)を使用すると、ユーザーは次のタスクを実行できます。

- 編集: 既存のリソース文字列のキー値を変更します。新しい値を持つ文字列は、オーバーライド・バンドルに保存されます。

- 新規キー/値: アプリケーション・オーバーライド・バンドルにキーと値のペアを作成します。

図17-30 リソース文字列キーを作成および編集するためのアイコン

「図17-30 リソース文字列キーを作成および編集するためのアイコン」の説明

ユーザーが編集できるのは、同じMDSレイヤーで作成された文字列のみです。その他の文字列は、図17-31に示すように、読取り専用として表示されます。

注意:

「テキスト・リソースの選択」ダイアログで値を直接入力してリソース・バンドルのデフォルトのコンテンツをオーバーライドしようとすると、この変更は有効にならず、空白ページが表示されます。

したがって、「テキスト・リソースの選択」ダイアログで値を直接入力するのではなく、新しいリソース文字列を作成することをお薦めします。

図17-31 「テキスト・リソースの選択」ダイアログの読取り専用のリソース文字列

「図17-31 「テキスト・リソースの選択」ダイアログの読取り専用のリソース文字列」の説明

- 「表示値」フィールド: リソース文字列を指定してUIでの表示用に変換するかまたは既存の文字列を変更します。

- 「説明」フィールド: リソースの翻訳可能な説明を指定するかまたは既存の説明を変更します。

- 「検索」フィールド: 既存のリソースを検索します。ユーザーは、同じレイヤー、異なるMDSレイヤーまたは設計時にJSPXファイルで定義および使用されたリソース・バンドルで作成された文字列を検索できます。

- 検索結果表: 検索結果を表示し、文字列を編集し、新しい文字列に値を指定します。
ユーザーは、同じレイヤーで作成された文字列を編集できます。設計時または別のMDSレイヤーで作成されたその他の文字列は、プロパティで使用できるだけで編集できません。

リンクまたはステータス・インジケータ・トグルが最後の列に表示され、ユーザーが文字列をアクティブな翻訳対象リソースに昇格できるようにする(図17-32)か、または文字列をアクティブなリソースとして指定(図17-33)します。

図17-32 リソース文字列の「使用」リンク

「図17-32 リソース文字列の「使用」リンク」の説明

図17-33 リソース文字列の「アクティブ」ステータス

「図17-33 リソース文字列の「アクティブ」ステータス」の説明

注意:

設計時に作成されたリソース文字列を検索すると、コンポーザは、JSPXファイルでリソース文字列を指定するときに使用されるc:setタグを検索します。

次の例は、JSPXページでComposerBundleを定義する際に使用されるc:set要素を示しています。

<c:set var="portalBundle"
value="#{compBundle['test.resource.ComposerBundle']}"/>

- 「作成」ボタン: 新しいリソース文字列を作成します。「作成」ボタンをクリックすると、検索結果表に、新しいリソースを作成するための入力フィールドを備えた新しい行が用意されます。ユーザーは、行の内側をダブルクリックし、図17-34に示すように、「キー」、「表示値」および「説明」に値を指定してから「OK」をクリックして新しい文字列を作成できます。

図17-34 検索結果表で新しいリソース文字列を作成するためのフィールド

「図17-34 検索結果表で新しいリソース文字列を作成するためのフィールド」の説明

ユーザーは、オーバーライド・バンドルに保存される非アクティブ文字列を作成できるのみです。最後の列の「使用」ボタンをクリックすると、現在のプロパティ値としてこの文字列を使用することが選択されます。

- 「削除」ボタン: 選択したリソースを検索結果表から削除します。

- 「リフレッシュ」: 検索結果表をリフレッシュします。

ノート

- コンポーザは、実行時に約500のリソース文字列の作成をサポートします。この数を超えると、アプリケーションのパフォーマンスは低下します。

- リソース文字列エディタの検索条件では、大文字と小文字が区別されます。

- 検索文字列の説明を検索するには、ユーザーは検索条件に完全な文字列値を指定する必要があります。

- JDeveloperの「プロパティ・バンドル」または「リスト・リソース・バンドル」で作成されたエントリの文字列説明は、リソース文字列エディタには表示されません。

- リソース文字列を編集するオプションは、「パラメータ」タブと「イベント」タブのプロパティには無効です。
ADFリソースのEL値がページ・パラメータ、タスク・フロー・パラメータ、ポートレット・パラメータなどのページ定義パラメータで参照される場合、ELをバインドすると空の値が返されます。ユーザーは、ページ定義パラメータでADFリソースのEL値を参照しないようにする必要があります。

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

ユーザーは、ページで様々なオプションを使用してコンポーネントの表示と非表示を選択できます。ユーザーは、次の方法でコンポーネントを非表示または表示にできます。

注意:

動作の表示または非表示がコンポーネントのrenderedプロパティに関連付けられます。ユーザーがコンポーネントを非表示にする場合、renderedプロパティはfalseに設定されます(またはこの逆)。コンポーネントのrendered属性がEL値の場合は、その値は表示または非表示オプションの使用時に失われます。値はtrueまたはfalseに設定されます。

- コンポーネントの「編集」アイコンをクリックします。「コンポーネント・プロパティ」ダイアログで、「コンポーネントの表示」チェック・ボックスを選択解除します(図17-35)。

図17-35 「コンポーネント・プロパティ」ダイアログの「コンポーネントの表示」オプション

「図17-35 「コンポーネント・プロパティ」ダイアログの「コンポーネントの表示」オプション」の説明

ダイアログで「コンポーネントの表示」チェック・ボックスを選択し、「適用」または「OK」をクリックすると、コンポーネントがページに再度レンダリングされます。

- コンポーネントのコンテナで「編集」アイコンをクリックします。「コンポーネント・プロパティ」ダイアログの「子コンポーネント」タブで、コンポーネント名に対して表示されている「コンポーネントの非表示」リンクをクリックします。

図17-36 コンテナの「コンポーネント・プロパティ」ダイアログの「コンポーネントの非表示」リンク

「図17-36 コンテナの「コンポーネント・プロパティ」ダイアログの「コンポーネントの非表示」リンク」の説明

コンポーネントが非表示のとき、そのコンテナの「コンポーネント・プロパティ」ダイアログには、そのコンポーネントに対する「コンポーネントの表示」リンクが表示されます。ダイアログでこのリンクをクリックし、「適用」または「OK」をクリックすると、コンポーネントが再度表示されます。

17.4.7 コンポーネントの削除

ユーザーは、ページのヘッダーにある「削除」アイコンをクリックして、ページからコンポーネントを削除できます。

ユーザーは「削除」ダイアログで削除の確認を求められます。

注意:

コンポーネントに対してカスタマイズ制限を定義した場合、そのコンポーネントに対する「削除」アイコンは実行時に無効になります。詳細は、第23.1.1項「タイプ・レベルのカスタマイズ・ポリシーの定義方法」を参照してください。

17.4.8 レイアウトの変更

「デザイン」ビューで、「レイアウトの変更」アイコンを使用すると、ユーザーは8つの事前定義されたレイアウトのセットからレイアウトを選択できます。デフォルトのページ・レイアウトはthreeColumnです。

「ソース」ビューで、ユーザーはLayout Customizableコンポーネントを選択し、そのプロパティを表示できます。レイアウト・オプションは、「コンポーネント・プロパティ」ダイアログに表示されます。ユーザーは、任意の事前定義されたレイアウトを選択し、「適用」または「OK」をクリックできます。

注意:

ユーザーが事前定義されたレイアウト・オプションを使用できるのは、設計時にページにLayout Customizableコンポーネントを追加した場合のみです。詳細は、第17.6.5項「Layout Customizable」を参照してください。

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

ユーザーは、「デザイン」ビューと「ソース」ビューの両方から「ページ・プロパティ」ダイアログにアクセスできます。このダイアログでは、ユーザーは、ページのパラメータの作成または編集およびプロパティの表示を実行できます。保護されたアプリケーションで実行時に作成したページでは、付与権限を持つユーザーは、「セキュリティ」タブを使用して、他のユーザーのページ・アクセス権限を編集できます。

図17-37は、「ページ・プロパティ」ダイアログの「セキュリティ」タブを示しています。

図17-37 「ページ・プロパティ」ダイアログの「セキュリティ」タブ

「図17-37 「ページ・プロパティ」ダイアログの「セキュリティ」タブ」の説明

「パラメータ」タブ(図17-38)で、ユーザーは、コンポーネント・プロパティにリンク可能なページ・パラメータを作成し、ページ上のコンポーネントをページ・コンテキストに適応させることができます。たとえば、ページにSYMBOLというパラメータがあり、このデフォルト値がORCLであるとします。このページには、株式グラフ、株価および会社情報のタスク・フローが含まれているとします。これらのタスク・フローは、これらすべてのタスク・フローがSYMBOLの値の変化に応答し、これに応じて更新されるようにページ・パラメータでリンクすることができます。

図17-38 「ページ・プロパティ」ダイアログの「パラメータ」タブ

「図17-38 「ページ・プロパティ」ダイアログの「パラメータ」タブ」の説明

ページ設定の編集の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページの作成に関する項およびページ、タスク・フロー、ポートレットおよびUIコンポーネントの関連付けに関する項を参照してください。

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

コンポーザを使用すると、ユーザーは、ページ・パラメータを読み取り、それに応じて動作が変更されるように、ポートレットやタスク・フローをページ・パラメータとリンクできます。

ユーザーは、「コンポーネント・プロパティ」ダイアログを使用して、ポートレットとタスク・フロー・パラメータをページ・パラメータに関連付けられます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページ、タスク・フロー、ポートレットおよびUIコンポーネントの同時関連付けに関する項を参照してください。

コンポーネントとページ・パラメータの関連付けに加えて、コンポーザを使用すると、ユーザーは、表示オプションおよびパラメータの値をページURLを介して渡すこともできます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページURLを介したパラメータ値の引渡しに関する項を参照してください。

17.4.11 ページのリセット

「ページのリセット」ボタンは、ページで「デザイン」ビューと「ソース」ビューの両方で使用できます。このボタンは、現在のレイヤーまたはヒント・レイヤーでページに対して行われた編集を削除し、これを前に保存されたバージョンまたは元のデフォルトの状態にリセットするオプションを提供する「ページのリセット」ダイアログを起動します。

注意:

「ページのリセット」ボタンは、コンポーザのツールバーにレンダリングされたデフォルトのアドオンです。ユーザーにページをリセットさせたくない場合、このボタンを無効にできます。詳細は、第20.2.5項「アドオンを選択的に表示する方法」を参照してください。

特定のラベルへのロールバック

アプリケーションがデータベース・ストアを使用するように構成されている場合、ユーザーがアプリケーションのカスタマイズを保存するたびに新しいバージョンのページが生成されます。アプリケーションにサンドボックスが構成されている場合、SAVE_LABEL_%規則を備えたラベルを作成することによって、コンポーザによってページを確実に次のようにリセットできます。

- SAVE_LABEL_%規則に従うラベル名が1つのみの場合、コンポーザはページをそのラベルの状態にリセットします。

- SAVE_LABEL_%規則に従うラベル名がない場合、コンポーザはページを元のデフォルトの状態にリセットします。

- SAVE_LABEL_%規則に従うラベルが複数ある場合、コンポーザはページをそれらの内で最新のラベルの状態にリセットします。

特定のラベルにロールバックするには、サンドボックスを使用するようにアプリケーションを構成しておく必要があります。具体的には、カスタマイズされるページのネームスペースは、アプリケーションのadf-config.xmlファイルの<metadata-namespaces>セクションで定義する必要があります。詳細は、第22.2.1項「コンポーザのサンドボックスの作成を有効にする方法」を参照してください。

特定のラベルにロールバックすることは、カスタマイズ・メタデータに対する依存性がアプリケーションにあり、ページを元の状態にリセットすると問題が発生する場合に便利です。

注意:

- ユーザーは、ページで行われたアプリケーションのカスタマイズのみをリセットできます。ベース・ページまたは共有コンポーネントのページで定義されたコンポーネントはそのままになります。

- ユーザーがページをリセットすると、実行時にページに追加されたコンポーネントは削除されます。ただし、ページでテンプレートを使用している場合、テンプレートにあるPanel Customizableコンポーネント内に追加されたコンポーネントは削除されません。

例17-1は、SAVE_LABEL_接頭辞を持つラベルを作成するサンプル・コードを示しています。

例17-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);

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

コンポーザには、ページの破損を引き起こすカスタマイズ・エラーをユーザーに警告するメカニズムが用意されています。ユーザーは、次の方法でエラーに関する警告を受けます。

- 変更がMDSに保存される場合、「エラー」ダイアログ(図17-39)によって、ユーザーが現在のコンテキストで行った最後の変更のみまたはすべての変更をロールバックするオプションが提供されます。

図17-39 ユーザーに変更の破棄を求める「エラー」ダイアログ

「図17-39 ユーザーに変更の破棄を求める「エラー」ダイアログ」の説明

- 変更がまだMDSに保存されていない場合、「エラー」ダイアログ(図17-40)は、エラーが発生し、ページが再ロードされることをユーザーに通知します。

図17-40 ページの再ロードをユーザーに通知する「エラー」ダイアログ

「図17-40 ページの再ロードをユーザーに通知する「エラー」ダイアログ」の説明

次の操作を実行中に発生するエラーは、ページの破損を引き起こす場合があります。

- 切取りおよび貼付けオプション使用時の間違った位置へのコンポーネントの貼付け(表の列の表外への貼付けなど)。

- コンポーネントまたはタスク・フローの追加(エラーが発生するWebサービスをコールするタスク・フローの追加など)。

- ドラッグ・アンド・ドロップの方法を使用したページへのShow Detail Frameコンポーネントの移動

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

図17-41に示す、コンポーザのツールバーの「保存してラベル付け」ボタンを使用すると、ユーザーは、アプリケーションのカスタマイズを新しいラベルに保存できます。コンポーザで作成されたラベルはcomposer_の接頭辞を付けて格納されます。つまり、myLabelという名前で作成されたラベルはcomposer_myLabelとして格納されます。

ラベルを作成すると、ユーザーは、選択したオブジェクトのカスタマイズを選択したラベルのカスタマイズにリセットできます。これは、「カスタマイズ・マネージャ」の「プロモート」リンクを使用して実現できます。詳細は、「カスタマイズ・メタデータのプロモート」というタイトルの項を参照してください。

注意:

「保存してラベル付け」ボタンが表示されるのは、サンドボックスをアプリケーションのMDSデータベース・ストアで構成し、Page CustomizableコンポーネントのallowLabel属性をtrueに設定した場合のみです。この属性の詳細は、第B.1.1項「Page Customizable」を参照してください。

図17-41 コンポーザのツールバーの「保存してラベル付け」ボタン

「図17-41 コンポーザのツールバーの「保存してラベル付け」ボタン」の説明

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

「カスタマイズ・マネージャ」はコンポーザのアドオン・パネルで、ここでユーザーは、XMLドキュメント、ページ、ページ・フラグメント、ページのタスク・フローなどのオブジェクトのカスタマイズ・メタデータを管理できます。これは、このようなすべてのオブジェクトのリストをページに表示し、これらのオブジェクトがカスタマイズされるレイヤーに関する詳細を提供します。ユーザーは、選択したオブジェクトのカスタマイズ・メタデータをダウンロードし、これを編集し、修正したメタデータ・ファイルをアップロードできます。また、「カスタマイズ・マネージャ」は、カスタマイズを削除したり、前に保存したラベルからのカスタマイズをプロモートしたりするオプションも提供します。

カスタマイズ・マネージャは、デフォルトではカスタム・アプリケーションで使用できません。特定の構成を実行することにより有効にできます。詳細は、第20.2.4項「カスタマイズ・マネージャのアドオンの表示方法」を参照してください。カスタマイズ・マネージャのアドオンをアプリケーションが表示できるように構成する場合は、図17-42に示すように、コンポーザのツールバーに「カスタマイズ・マネージャ」ボタンが表示されます。

図17-42 「カスタマイズ・マネージャ」ボタン

「図17-42 「カスタマイズ・マネージャ」ボタン」の説明

「カスタマイズ・マネージャ」ボタンをクリックすると、図17-43に示すように、「カスタマイズ・マネージャ」ダイアログが起動します。

図17-43 「カスタマイズ・マネージャ」ダイアログ

「図17-43 「カスタマイズ・マネージャ」ダイアログ」の説明

「カスタマイズ・マネージャ」は、各レイヤーのカスタマイズされたページ、フラグメントまたはXMLドキュメントそれぞれに対して、「削除」、「プロモート」、「ダウンロード」および「アップロード」のリンクを表示します。ユーザーは、検索フィールドでJSPX、JSFFまたはXMLのファイル名を指定し、そのファイルのオブジェクトのカスタマイズの詳細を表示し、そのカスタマイズを管理できます。ファイルを検索するには、ファイルへの絶対パス(/oracle/webcenter/portalapp/pages/home.jspxなど)を指定する必要があります。

注意:

深くネストされたタスク・フローまたは循環依存性を持つタスク・フローの場合、「カスタマイズ・マネージャ」は、最大で深度10のタスク・フローを表示します。

ユーザーは、アプリケーションが実行されている現在のMDSコンテキストでカスタマイズを管理できます。「現在のコンテキスト」列には、選択したレイヤーのカスタマイズを管理するオプションが表示されます。ドロップダウン・メニューには、ページまたはフラグメントがカスタマイズされたレイヤーがリストされます。この列は、行ったカスタマイズを管理するすべてのユーザーにとって便利です。「すべてのレイヤー」列には、アプリケーションのすべてのレイヤーのカスタマイズを管理するオプションが表示されます。この列は、すべてのレイヤーで行われたカスタマイズを管理する管理者にとって便利です。

注意:

- アプリケーションのサンドボックスを構成し、すべての「カスタマイズ・マネージャ」操作をサンドボックスで実行する場合(ユーザーがカスタマイズ・ドキュメントをアップロードする場合など)、これは、ユーザーがそのセッションで行われた変更を保存または破棄するまで、サンドボックスに格納されます。

- 選択したオプションを表示するためにのみ「カスタマイズ・マネージャ」をカスタマイズできます。たとえば、「ダウンロード」、「削除」または「アップロード」のリンクを表示または非表示にできます。さらに、現在のコンテキストの詳細のみまたはすべてのレイヤーの詳細を表示することを選択できます。
これらの設定は、カスタマイズ・マネージャ・タスク・フローのパラメータを使用して行えます。タスク・フローでパラメータ・サポートを有効にすることによって、ユーザーが実行時に「カスタマイズ・マネージャ」をカスタマイズできるようにすることも可能です。詳細は、第20.8項「プロパティ・フィルタの定義」を参照してください。

この項では、「カスタマイズ・マネージャ」によって提供される機能について説明します。次のサブセクションが含まれます:

- カスタマイズ・メタデータのダウンロード

- カスタマイズされるすべてのオブジェクトのカスタマイズ・メタデータのダウンロード

- カスタマイズ・メタデータのアップロード

- カスタマイズ・メタデータの削除

- カスタマイズ・メタデータのプロモート

カスタマイズ・メタデータのダウンロード

「ダウンロード」リンクでは、ユーザーは、選択したページ、フラグメントまたはXMLドキュメントのカスタマイズ・ドキュメントを選択したレイヤーからダウンロードできます。これは、ユーザーがコンポーネントのカスタマイズ・メタデータを編集する場合やカスタマイズ・メタデータを調査する場合に便利です。たとえば、ページにエラーが表示されている場合、ユーザーはカスタマイズをダウンロードして確認し、必要に応じてこれをOracleサポート・サービスに送信できます。こうすることによって、ページのカスタマイズの問題の診断に役立ちます。

「保存」ダイアログを使用すると、ユーザーは、ドキュメントを保存する場所を選択できます。ユーザーは、このファイルをローカルで編集し、これをサイトに再アップロードできます。ファイルのアップロードの詳細は、「カスタマイズ・メタデータのアップロード」を参照してください。

カスタマイズされるすべてのオブジェクトのカスタマイズ・メタデータのダウンロード

ページの下部にある「すべてのレイヤーに対するカスタマイズのダウンロード」リンクを使用すると、ユーザーは、「カスタマイズ・マネージャ」に表示されるすべてのカスタマイズ・ドキュメントを含むZIPファイルをダウンロードできます。

カスタマイズ・メタデータのアップロード

「アップロード」リンクを使用すると、ユーザーは、選択したアーティファクト(ページ、フラグメント、XMLドキュメントなど)のカスタマイズ・ドキュメントを特定のレイヤーにアップロードできます。図17-44は、ユーザーがアップロードするファイルを選択できる「カスタマイズのアップロード」ダイアログを示しています。

図17-44 「カスタマイズのアップロード」ダイアログ

「図17-44 「カスタマイズのアップロード」ダイアログ」の説明

アーティファクトは、アップロードしたドキュメントのメタデータに基づいてカスタマイズされます。

注意:

ページのFormタグのusesUpload属性は、「カスタマイズ・マネージャ」の「アップロード」リンクの表示を制御します。usesUploadをfalseに設定すると、「アップロード」リンクは動作しません。

カスタマイズ・メタデータの削除

「削除」リンクを使用すると、ユーザーは、選択したアーティファクトのカスタマイズ・ドキュメントを特定のレイヤーから削除できます。

カスタマイズ・メタデータのプロモート

ページをカスタマイズしている間、ユーザーは、任意の時点でアプリケーションのカスタマイズを保存し、新しいラベルを作成してそのカスタマイズを保存できます。「カスタマイズ・マネージャ」の「プロモート」リンクを使用すると、ユーザーは、ラベルを選択し、選択したページまたはタスク・フローのアプリケーションのカスタマイズをラベルのカスタマイズにリセットできます。

注意:

「プロモート」オプションが使用可能なのは、サンドボックス対応のアプリケーションのみです。

コンポーザの「保存してラベル付け」オプションの詳細は、第17.4.13項「アプリケーションのカスタマイズ保存時のラベルの作成」を参照してください。

「プロモート」リンクは、図17-45に示すように、プロモートされるすべての使用可能なラベルおよびファイルをリストする「ドキュメントのプロモート」ダイアログを起動します。

図17-45 「ラベルの選択」ダイアログ

「図17-45 「ラベルの選択」ダイアログ」の説明

ユーザーは、ラベルを選択し、そのラベルを選択したアーティファクトのサンドボックスにプロモートできます。つまり、選択したアーティファクトのアプリケーションのカスタマイズは、指定したラベルのカスタマイズにリセットされます。タスク・フローを選択した場合、すべてのページ・フラグメントおよびページ定義がプロモートされます。ページまたはフラグメントを選択した場合、ページまたはフラグメントおよびそのページ定義がプロモートされます。ユーザーは、使用可能な任意のレイヤーからラベルを選択し、そのラベルのカスタマイズをプロモートできます。たとえば、アプリケーションにレイヤーMCOOPER、JDOEおよびSITEがあり、MCOOPERレイヤーで作業しているユーザーがページの「プロモート」リンクをクリックすると、「プロモート」ダイアログに3つすべてのレイヤーで使用可能なすべてのラベルがリストされます。

17.5 ページ編集モードの「ソース」ビューでの編集機能

「ソース」ビュー(図17-46)は、WYSIWYGおよびコンポーネント・ナビゲータのページ・コンポーネントの階層レンダリングを提供します。「コンテンツの追加」、「編集」、「削除」、「切取り」および「貼付け」の各制御を「ソース」ビューのツールバーで使用でき、これらはコンポーザで特定の操作を提供します。「ソース」ビューでは、ユーザーは、「デザイン」ビューでは選択できないコンポーネントのプロパティにアクセスして変更できます。たとえば、多くのADF Facesコンポーネントは「ソース」ビューでのみ編集できます。ユーザーは、タスク・フロー内のコンポーネントも編集できます。

図17-46 ページの「ソース」ビュー

「図17-46 ページの「ソース」ビュー」の説明

デフォルトでは、コンポーネント・ナビゲータはコンポーザ内でページの上部に表示されます。ユーザーは、「表示」メニューの「ソースの位置」オプション(図17-47)を使用して、これを下部、左または右に表示することを選択できます。ユーザーは、コンポーネント・ナビゲータのエッジの境界をドラッグして、その高さまたは幅を変更できます。

図17-47 「表示」メニューの「ソースの位置」オプション

「図17-47 「表示」メニューの「ソースの位置」オプション」の説明

コンポーネント・ナビゲーションのルートには、設計時のPage Customizableコンポーネントの直接の子があります。ノードがコンポーネント・ナビゲーションで選択されると、対応するコンポーネントがページで選択されます。同様に、コンポーネントがページで直接選択されると、対応するノードがコンポーネント・ナビゲータで選択されます。

コンポーネント・ナビゲータとページの間にあるグレーの領域には、選択したコンポーネントのブレッドクラム・トレイルが表示されます(図17-48)。ブレッドクラム・トレイルは、ページでコンポーネントがどのようにネストされているかを示します。コンポーネントが選択されていないと、ブレッドクラム・バーはページ名のみを表示します。コンテナ名は、クリックすると選択したコンポーネントを強調表示するリンクです。

図17-48 「ページ・ソース」ビューで選択したコンポーネントのブレッドクラム

「図17-48 「ページ・ソース」ビューで選択したコンポーネントのブレッドクラム」の説明

編集可能なタスク・フローには、タスク・フローの横に「タスク・フローの編集」リンクがあります。「タスク・フローの編集」リンクをクリックすると、コンポーネント・ナビゲータにタスク・フローのページまたはフラグメント内のコンポーネントの階層が表示されます。ユーザーは、このページまたはフラグメントを編集し、タスク・フローをズーム・アウトするために「閉じる」をクリックできます。詳細は、第17.5.2項「タスク・フロー内のコンテンツの編集」を参照してください。同様に、宣言コンポーネントに、選択した宣言コンポーネントのファセット内部のコンポーネントをユーザーが編集できる「開く」リンクが表示されます。

「デザイン」ビューと同様に、「ソース」ビューでもユーザーは、コンポーネントの追加、ページおよびコンポーネントのプロパティの編集、ページ・レイアウトの変更、コンポーネントの削除などのタスクを実行できます。ユーザーは、ページまたはコンポーネント・ナビゲータでコンポーネントを選択し、「ソース」ビューのツールバーでボタンをクリックしてこれらのタスクを実行できます。コンポーネントを編集または削除するために、ユーザーは、コンポーネントのコンテキスト・メニューにあるオプションを選択することもできます。これらのタスクに加えて、ユーザーは、「ページ・ソース」ビューで次のタスクを実行できます。

- 第17.5.1項「切取りオプションおよび貼付けオプションを使用したページ・コンテンツの再配置」

- 第17.5.2項「タスク・フロー内のコンテンツの編集」

- 第17.5.3項「宣言型コンポーネント内のコンテンツの編集」

- 第17.5.4項「コンポーネントの表示または非表示」

注意:

- 「保存」ボタンは、アプリケーションがサンドボックスを使用するように構成されている場合のみ(「デザイン」ビューと「ソース」ビューの両方で)コンポーザのツールバーに表示されます。サンドボックスの詳細は、第22.2項「コンポーザのサンドボックスの使用」を参照してください。

- アプリケーションを保護し、コンポーネントにカスタマイズ制限を適用することによって、ユーザーがこれらのタスクのすべてまたは一部を実行できないように制限することができます。詳細は、第17.7項「セキュリティおよびコンポーザ」を参照してください。

17.5.1 切取りオプションおよび貼付けオプションを使用したページ・コンテンツの再配置

ユーザーは、「ソース」ビューのツールバーで「切取り」オプションおよび「貼付け」オプションを使用して、ページのコンポーネントを再配置できます(図17-49)。「貼付け」メニューを使用すると、ユーザーは、コンポーネント・ナビゲーションでコンポーネントを他の任意のコンポーネントの中、前または後ろに貼り付けることができます。

図17-49 「ソース」ビューのツールバーの「切取り」オプションおよび「貼付け」オプション

「図17-49 「ソース」ビューのツールバーの「切取り」オプションおよび「貼付け」オプション」の説明

「切取り」ボタンおよび「貼付け」ボタンは、ユーザーが切取りまたは貼付けの操作をサポートしていないコンポーネントを選択した場合にはグレー表示されます。切取りおよび貼付けの操作は、次の条件ではサポートされません。

- ターゲット・コンポーネントが切り取ったコンポーネントと同じページにない場合。

- ターゲット・コンポーネントが切り取ったコンポーネント内部にネストされている場合。

- ターゲット・コンポーネントがファセットされたコンポーネント(つまり、ファセット内部のコンポーネント)の前または後ろにある場合。

- ターゲット・コンポーネントの親がカスタマイズ可能でない場合。

- 切り取ったコンポーネントの親がカスタマイズ可能でない場合。

注意:

カスタマイズが制限されているコンポーネントは、その親がカスタマイズ可能である場合、その親コンテナ内で再配置できます。

例

カスタマイズ可能ページにADF Faces Tableコンポーネントが含まれている場合、コンポーザの「ソース」ビューで、ユーザーは、表および列グループ内またはこれらの間で列を順序変更または移動できます。コンピュータのアクセサリを販売するために作成したサンプル・アプリケーションについて考えてみます。このアプリケーションのホーム・ページには、ソフトウェアおよびハードウェアの販売に関する詳細を含む2つの表があります。ハードウェア・オプションの表には4つの列があります。ハード・ディスクの列には、図17-50に示すように、列グループ内に磁気ディスクおよび半導体の列があります。

図17-50 サンプル・アプリケーションの表

「図17-50 サンプル・アプリケーションの表」の説明

ユーザーは、「ソース」ビューに切り替えて、ハード・ディスク列内で磁気ディスクと半導体の列を順序変更するかまたはこれらを列グループ外に移動し、他の任意の列(ワイヤレスの列など)の隣に貼り付けることができます。図17-51は、コンポーネント・ナビゲータの表構造を示しています。

図17-51 「ソース」ビューの表の列

「図17-51 「ソース」ビューの表の列」の説明

ユーザーは、列を選択し、「切取り」をクリックしてから別の列を選択し、「前に貼付け」または「後に貼付け」をクリックできます。

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

Oracle ADFタスク・フローは、1つ以上のビューから構成され、タスク・フローの各ビューはページまたはページ・フラグメントと関連付けられています。タスク・フローをページに追加すると、現在のビューに関連付けられたフラグメントのコンテンツがページに表示されます。コンポーザでは、ユーザーは、タスク・フローの現在のビューで使用されるページまたはフラグメントのコンポーネントを編集できます。タスク・フローのページまたはフラグメントに対して変更が行われるため、変更は、タスク・フローのページまたはフラグメントが使用されるすべての場所に反映されます。

「ソース」ビューには、タスク・フローを開き、コンポーネント・ナビゲータでそのページまたはフラグメントにあるコンポーネントのみを表示するオプションが用意されています。ユーザーは、ページまたはフラグメントを編集し、タスク・フローを閉じて、そのタスク・フローを含むページにナビゲートして戻ることができます。

タスク・フローのカスタマイズ権限を持つユーザーは、そのページまたはフラグメントを編集できます。

コンポーネント・ナビゲータの各タスク・フローは、図17-52に示すように、その隣に「タスク・フローの編集」リンクを表示します。

図17-52 タスク・フローの「タスク・フローの編集」リンク

「図17-52 タスク・フローの「タスク・フローの編集」リンク」の説明

「タスク・フローの編集」リンクをクリックすると、「ソース」ビューがズーム・インし、タスク・フローのページとそのコンポーネントが表示されます(図17-53)。

図17-53 タスク・フロー内のコンポーネント

「図17-53 タスク・フロー内のコンポーネント」の説明

ユーザーは、タスク・フローのページでコンポーネントを選択し、他のページのコンポーネントの編集と同様にコンポーザでこれを編集できます。ただし、コンポーザは、あるタスク・フローから別のタスク・フローへのコンポーネントの移動をサポートしていません。

複数のユーザーが同時に同じタスク・フローを編集しようとすると、互いに注意するようそれぞれのユーザーに警告する並行性警告がコンポーザに表示されます。ただし、この警告は、サンドボックスがアプリケーションで構成されている場合のみ表示されます。このような場合に変更がどのように保存されるかについての詳細は、「並行編集時の処理」を参照してください。

上矢印または開いているタスク・フローの隣の「閉じる」リンク(図17-54)をクリックすると、コンポーネント・ナビゲータは、このタスク・フローを含むページを表示します。

図17-54 タスク・フローをズーム・アウトするオプション

「図17-54 タスク・フローをズーム・アウトするオプション」の説明

17.5.2.1 タスク・フローのリセット

「ソース」ビューのツールバーにある「タスク・フローのリセット」ボタン(図17-55)は、タスク・フローに対して行われたアプリケーションのカスタマイズを削除し、これを前に保存されたバージョンまたは元のデフォルトの状態にリセットするオプションを提供する「タスク・フローのリセット」ダイアログを起動します。タスク・フローを前に保存されたラベルの状態に確実にリセットできるのは、アプリケーションがデータベース・ストアを使用するように構成されている場合のみです。「タスク・フローのリセット」ボタンは、タスク・フローへのズーム・イン時にのみレンダリングされます。

注意:

アプリケーションで「ページのリセット」ボタンを無効にすると、「タスク・フローのリセット」ボタンも無効になります。ユーザーは、変更を行った後にはタスク・フローをリセットできません。詳細は、第17.4.11項「ページのリセット」を参照してください。

図17-55 「タスク・フローのリセット」ボタン

「図17-55 「タスク・フローのリセット」ボタン」の説明

特定のラベルへのロールバック

アプリケーションがデータベース・ストアを使用するように構成されている場合、ユーザーがアプリケーションのカスタマイズを保存するたびに新しいバージョンのタスク・フローが生成されます。アプリケーションにサンドボックスが構成されている場合、SAVED_LABEL_%規則を備えたラベルを作成することによって、コンポーザによってタスク・フローを確実に次のようにリセットできます。

- SAVED_LABEL_%規則に従うラベル名が1つのみの場合、コンポーザはタスク・フローをそのラベルの状態にリセットします。

- SAVED_LABEL_%規則に従うラベル名がない場合、コンポーザはタスク・フローを元のデフォルトの状態にリセットします。

- SAVED_LABEL_%規則に従うラベルが複数ある場合、コンポーザはタスク・フローをそれらの内で最新のラベルの状態にリセットします。

特定のラベルにロールバックするには、サンドボックスを使用するようにアプリケーションを構成しておく必要があります。具体的には、カスタマイズされるタスク・フローのネームスペースは、アプリケーションのadf-config.xmlファイルの<metadata-namespaces>セクションで定義する必要があります。詳細は、第22.2.1項「コンポーザのサンドボックスの作成を有効にする方法」を参照してください。

特定のラベルにロールバックすることは、カスタマイズ・メタデータに対する依存性がアプリケーションにあり、タスク・フローを元の状態にリセットすると問題が発生する場合に便利です。

ユーザーがタスク・フローをリセットすると、次の変更が発生します。

- 現在選択されているフラグメントのみがリセットされます。タスク・フローのその他のフラグメントはリセットされません。

- ネストされたタスク・フローはリセット操作によって影響を受けません。

- タスク・フローがリセットされると、変更は、このタスク・フローを使用するすべてのページに反映されます。

- 実行時にタスク・フローに追加されたコンポーネントは削除されます。ただし、タスク・フローのページまたはフラグメントでテンプレートを使用している場合、テンプレートにあるPanel Customizableコンポーネント内に追加されたコンポーネントは削除されません。

例17-2は、SAVE_LABEL_接頭辞を持つラベルを作成するサンプル・コードを示しています。

例17-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);

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

アプリケーション・ページに宣言型コンポーネントが含まれている場合、ユーザーはコンポーザでこれらのコンポーネントを編集できます。宣言型コンポーネントの編集は、タスク・フローの編集と似ています。詳細は、第17.5.2項「タスク・フロー内のコンテンツの編集」を参照してください。

図17-56および図17-57に、宣言コンポーネントで使用可能な「コンポーネントの編集」および「閉じる」オプションを示します。

図17-56 宣言型コンポーネントの編集オプション

「図17-56 宣言型コンポーネントの編集オプション」の説明

図17-57 宣言型コンポーネントを編集中に表示される「閉じる」オプション

「図17-57 宣言型コンポーネントを編集中に表示される「閉じる」オプション」の説明

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

コンポーネントを非表示にするには、コンポーネント・ナビゲータまたはページでコンポーネントを右クリックし、コンテキスト・メニューで「コンポーネントの非表示」を選択します(図17-58)。

図17-58 ページの「ソース」ビューの「コンポーネントの非表示」オプション

「図17-58 ページの「ソース」ビューの「コンポーネントの非表示」オプション」の説明

非表示のコンポーネントはページに表示されませんが、コンポーネント・ナビゲータにはグレー表示されます。非表示のコンポーネントのコンテキスト・メニューには「コンポーネントの表示」オプションが表示されます。このオプションを選択すると、ページにコンポーネントが再レンダリングされます。

注意:

動作の表示または非表示がコンポーネントのrenderedプロパティに関連付けられます。ユーザーがコンポーネントを非表示にする場合、renderedプロパティはfalseに設定されます(またはこの逆)。コンポーネントのrendered属性がEL値の場合は、その値は表示または非表示オプションの使用時に失われます。値はtrueまたはfalseに設定されます。

17.6 コンポーザ・コンポーネント

実行時にJSPXドキュメント(*.jspx)を編集できるようにするには、アプリケーション設計時にOracle JDeveloperで、ページにコンポーザ・コンポーネントを追加する必要があります。

注意:

コンポーザは、JSPXページおよびADF Facesでのみ動作します。これらのコンポーネントはJSPページには追加できません。コンポーザ・コンポーネントのページへの追加の詳細は、第19.1項「コンポーザ・コンポーネントを使用した編集可能ページの設計」を参照してください。

コンポーネント・パレットから使用可能なコンポーザ・タグ・ライブラリ(図17-59)には、ページを編集可能にするために追加できるコンポーネントが用意されています。

図17-59 コンポーネント・パレットのコンポーザ・タグ・ライブラリ

「図17-59 コンポーネント・パレットのコンポーザ・タグ・ライブラリ」の説明

この項では、ページの編集を可能にするために使用されるコンポーザ・コンポーネントの概要を説明します。次のサブセクションが含まれます:

- 第17.6.1項「Page Customizable」

- 第17.6.2項「Change Mode LinkおよびChange Mode Button」

- 第17.6.3項「Panel Customizable」

- 第17.6.4項「Show Detail Frame」

- 第17.6.5項「Layout Customizable」

これらのコンポーネントおよびその他のコンポーザ・コンポーネント(Custom Actionなど)の詳細は、付録B「コンポーザ・コンポーネントのプロパティおよびファイル」を参照してください。

17.6.1 Page Customizable

Page Customizableコンポーネントは、ページの編集可能領域を定義します。この領域内では、コンポーネントのプロパティの編集、ページへのコンテンツの追加、コンテンツの配置などを行えます。

Page Customizableコンポーネントを追加すると、実行時にコンポーザをページに含めることが可能になります。ユーザーは、図17-60に示すように、ページの上部で使用できるページ関連の制御、コンポーネントの「コンテンツの追加」ボタンおよび各編集可能ページ・コンポーネントの「編集」アイコンを使用して、コンポーザでページを編集できます。

図17-60 Page Customizableコンポーネント

「図17-60 Page Customizableコンポーネント」の説明

1操作で複数のアプリケーション・ページの実行時編集を可能にするには、Page Customizableコンポーネントをそれらのページに使用するADFページ・テンプレートに追加します。これにより、Page Customizableを各ページに手動で追加する必要がなくなります。Page Customizableコンポーネントの追加の詳細は、第19.1.2項「Page Customizableを使用した実行時カスタマイズの有効化方法」を参照してください。

17.6.2 Change Mode LinkおよびChange Mode Button

Change Mode LinkまたはChange Mode Buttonコンポーネントは、ページの表示モードから編集モードへの簡単な切替え方法を提供します。図17-61は、ページのChange Mode Linkコンポーネントを示しています。

図17-61 Change Mode Linkコンポーネント

「図17-61 Change Mode Linkコンポーネント」の説明

Change Mode LinkまたはChange Mode Buttonの使用法の詳細は、第19.1.3項「Change Mode LinkまたはChange Mode Buttonを使用したページ・モードの切替えを有効にする方法」を参照してください。

17.6.3 Panel Customizable

Panel Customizableは、ユーザーが実行時にコンポーネントを追加できるページの領域を定義します。ユーザーは、Panel Customizableの子コンポーネントとして追加されるShow Detail Frameコンポーネントまたはポートレットを移動または最小化できます。ユーザーは、ページの別のPanel Customizableコンポーネントにこれらのコンポーネントをドラッグ・アンド・ドロップすることも可能です。

編集モードでは、Panel Customizableコンポーネントは、点線のボックスとしてレンダリングされます。実際、Panel Customizableは、実行時リソース・カタログではBoxと呼ばれます。図17-62に示すように、ページの各Panel Customizableコンポーネントに「コンテンツの追加」ボタンが表示されます。このボタンを使用してリソース・カタログ・ビューアを開き、Panel Customizable内にコンポーネントを追加できます。

図17-62 Panel Customizableコンポーネント

「図17-62 Panel Customizableコンポーネント」の説明

詳細は、第19.1.4項「Panel Customizableコンポーネントを使用したページの編集可能領域の定義方法」を参照してください。

17.6.4 Show Detail Frame

Show Detail Frameコンポーネントは、アイコンを含むヘッダーとともに子コンポーネントの周りに境界またはクロムをレンダリングし、ユーザーがいくつかの操作を実行できるようにします。このメニューで使用可能なアクションでは、ユーザーがコンポーネントおよびそのコンテンツをページの新しい場所に移動できます(図17-63)。ユーザーは、Show Detail FrameコンポーネントをあるPanel Customizableコンポーネントからページにある別のPanel Customizableコンポーネントにドラッグ・アンド・ドロップすることも可能です。Show Detail Frameは、移動可能にするためにはPanel Customizableコンポーネント内に含まれている必要があります。

図17-63 Show Detail Frameコンポーネント

「図17-63 Show Detail Frameコンポーネント」の説明

Show Detail Frameコンポーネントは次のアクションを可能にします。

- コンポーネントを縮小および展開します

- ページの別の場所にコンテンツを移動します

- タスク・フローを子コンポーネントとして追加した場合、「アクション」メニューを使用してカスタム・アクションとともにタスク・フロー・ナビゲーションを有効にします。

- ADF Facesの「リッチ・テキスト・エディタ」を子コンポーネントとして追加した場合、エンド・ユーザーは、「リッチ・テキスト・エディタ」のテキストを編集および保存できるようになります。

Show Detail Frameのファセットを使用すると、独自のUIコントロールを追加してコンテンツの表示をさらにカスタマイズできます。これらのファセットの使用方法の詳細は、第21.1項「ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化」を参照してください。

このコンポーネントのページへの追加の詳細は、第19.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」を参照してください。

17.6.5 Layout Customizable

Layout Customizableコンポーネントは、エンド・ユーザーがその子コンポーネントをいくつかの事前定義された方法(2列、3列など)でレイアウトできるコンテナです。ページのすべてのコンポーネントがLayout Customizableコンポーネントに囲まれるような方法でページを設計できます。このような場合、レイアウトはページ全体に適用されます。

レイアウト変更を使用して事前定義されたレイアウトにアクセスします。デフォルトでは、レイアウト変更は、ページの表示モードとページの編集モードの両方で小さい緑色のアイコンとして表示されます。Layout Customizableコンポーネント属性を使用することによって、レイアウト変更をアイコン、テキストまたはアイコンおよびテキストとして表示することを選択できます。また、表示モードでレイアウト変更を表示するか非表示にするかを決定できます。図17-64は、ユーザーがレイアウト変更をクリックしたときに表示するLayout Customizableコンポーネントおよび事前定義されたレイアウトを示しています。

図17-64 Layout Customizableコンポーネント

「図17-64 Layout Customizableコンポーネント」の説明

詳細は、第19.1.5項「Layout Customizableを使用したページのレイアウトのカスタマイズの有効化方法」を参照してください。

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

エンド・ユーザー、アプリケーション開発者および管理者によってアクセスされるアプリケーションでは、すべての編集タスクの実行をすべてのユーザーに許可することは推奨されない場合があります。たとえば、コンポーネントの再配置や表示したくない領域の非表示などのタスクを実行することによってページの表示をカスタマイズすることのみをエンド・ユーザーに許可する必要がある場合があります。一方、アプリケーション開発者は、ページのコンテンツ、コンポーネント・プロパティなどを更新することを許可される必要があります。ページ、コンポーネントまたはコンポーネント属性をカスタマイズする機能は、タグ、ページ、コンポーネントおよび属性のレベルでセキュリティ定義から継承されます。ただし、ビジネス要件に合せてデフォルトのセキュリティ定義を様々なレベルでオーバーライドできます。

ページ、操作、コンポーネント、コンポーネント属性などの様々なレベルでアプリケーション・セキュリティを定義できます。コンポーネントでアプリケーション・カスタマイズを制限できるいくつかの方法があります。コンポーザは、コンポーネントがこれらのルールに従ってカスタマイズできるかどうかを判断します。たとえば、ユーザーがコンポーネントをカスタマイズするには、その前に、アプリケーション・カスタマイズが許可されるかどうかを判断するために、コンポーネントのセキュリティ制限のソースを問い合せます。コンポーネントがアプリケーション・カスタマイズを許可しない場合、コンポーザはこれが制限されているとみなします。つまり、コンポーザはコンポーネントを明示的にセキュリティ保護されているものとして処理します。表17-1に、アプリケーション・カスタマイズ制限を反映するコンポーザの動作を示します。

図17-1 コンポーザ・コンポーネントのカスタマイズ制限

制限

動作

ページ(およびそのコンテンツ)をカスタマイズ可能

コンポーザにより、制限なしでコンポーネントの編集が許可されます。

ページが制限されている

コンポーザは表示されますが、どのオプション(「ページ・プロパティ」ボタン、「編集」アイコンなど)にもアクセスできません。

いくつかの操作が制限されている

コンポーザは表示されますが、制限された操作に対応するオプションは無効になります。

コンポーネントが制限されている

「編集」アイコンはコンポーネントにレンダリングされず、そのプロパティは編集できません。

コンポーネントの属性が制限されている

制限された属性はコンポーザに表示されません。

開発者は、コンポーザのAPIを使用して、コンポーネントの属性が制限されているかどうかを確認できます。

セキュリティを実装中に付与される権限に応じて、ユーザーは、アプリケーションにログインするときに、異なるユーザーおよびアプリケーションのカスタマイズのタスクを実行できます。

注意:

保護されたアプリケーションでは、すべてのユーザーの権限を確認し、権限のあるユーザーに対してのみページ上で「編集」リンクまたはボタンを有効にすることをお薦めします。認証されていないユーザーが偶然ページの編集モードに入った場合でも、コンポーネント・プロパティの変更が可能です。

選択したユーザーの「編集」リンクまたはボタンを有効にするには、Change Mode LinkまたはChange Mode Buttonコンポーネントのrendered属性のEL値を指定します。詳細は、第B.1.2項「Change Mode LinkおよびChange Mode Button」を参照してください。

この項では、コンポーザ・コンポーネントのデフォルトのセキュリティ動作について説明します。次のサブセクションが含まれます:

- 第17.7.1項「ページおよびタスク・フローのセキュリティ」

- 第17.7.2項「MDSのカスタマイズ制限」

- 第17.7.3項「コンポーネントのアクション・レベルのセキュリティ」

デフォルトのセキュリティ動作のオーバーライドの詳細は、第23章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」を参照してください。

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

アプリケーションのjazn-data.xmlファイルは、ページ・レベルおよびタスク・フロー・レベルのセキュリティ情報のリポジトリです。コンポーザは、このファイルを参照し、ユーザーの権限に基づいて編集機能を有効にします。

- ページまたはタスク・フローのパーソナライズ権限を持っているユーザーは、第17.3項「ページ表示モードでのカスタマイズ機能」で説明しているユーザーのカスタマイズのみを実行できます。

- 編集権限またはカスタマイズ権限を持っているユーザーは、コンテンツの追加、コンポーネント・プロパティの編集、コンポーネントの削除などのすべての実行時編集タスクを実行できます。コンポーザおよびWebCenter Portalのカスタマイズ可能コンポーネントは編集権限とカスタマイズ権限を区別しません。

注意:

コンポーザおよびWebCenter Portalのカスタマイズ可能コンポーネントは、付与権限をすべての権限のスーパー・セットとする権限のカスケードをサポートしています。ページまたはタスク・フローの付与権限を持つユーザーは、編集、パーソナライズおよび表示の権限を持っているとみなされます。パーソナライズ権限を持つユーザーは、表示権限も持っているとみなされます。

表17-2は、ページおよびタスク・フロー・レベルの権限に基づいたコンポーザ動作を示しています。コンポーザおよびWebCenter Portalのカスタマイズ可能コンポーネントと関係のある権限のみがこの表にリストされています。付与権限は、すべての権限のスーパー・セットであるためリストされていません。付与権限を持つユーザーは、すべての編集タスクを実行できます。

表17-2 ページ権限またはタスク・フロー権限とコンポーザの動作のマッピング

権限

コンポーザの動作

編集またはカスタマイズ

ユーザーは、コンポーザが起動されたページの編集モードに切り替えてページを編集できます。

編集権限またはカスタマイズ権限のいずれかを持つユーザーは、すべての実行時編集タスクを実行できます。

ページまたはタスク・フローの編集権限またはカスタマイズ権限を持っている場合、ユーザーは次のことを実行できます。

- コンテンツの追加

- コンポーネント・プロパティの編集

- コンテンツの再配置

- コンポーザでのコンポーネントの削除

- ポートレットのパーソナライズまたはカスタマイズ

- 表示モードでのポートレットまたはタスク・フローの移動。これはユーザー・カスタマイズとして存続されます。

- 表示モードでのタスク・フローまたはポートレットの展開および縮小。これはユーザー・カスタマイズとして存続されます。

- タスク・フローでの表の列のサイズ変更。これはユーザー・カスタマイズとして存続されます。

- ページの元の状態へのリセット

- 表示モードでのコンポーネントの削除

注意: ページ・レベルの権限を持っているかまたはタスク・フロー・レベルの権限の持っているかに応じて、これらのタスクのすべてまたは一部を実行できます。

ユーザーがページの編集権限またはカスタマイズ権限を持っていないのにこれを編集しようとすると、これを行う権限がないことを示すメッセージが表示されます。

ユーザーがタスク・フローの編集権限またはカスタマイズ権限を持っていない場合、「ソース」ビューにタスク・フローの「編集」オプションが表示されません。

パーソナライズ

表示モードで、ページのパーソナライズ権限を持っているユーザーは次のことを実行できます。

- コンテンツの再配置

- ポートレットのパーソナライズ

- 表示モードでのポートレットまたはタスク・フローの移動。これはユーザー・カスタマイズとして存続されます。

- 表示モードでのタスク・フローまたはポートレットの展開および縮小。これはユーザー・カスタマイズとして存続されます。

- タスク・フローでの表の列のサイズ変更。これはユーザー・カスタマイズとして存続されます。

- 表示モードでのコンポーネントの削除

注意: パーソナライズ権限を持っていても、ユーザーはポートレットのカスタマイズは実行できません。

パーソナライズ権限、編集権限、カスタマイズ権限のいずれも持っていないユーザーがページを編集しようとすると、これを行う権限がないことを示すメッセージが表示されます。

表示

表示権限を持っているユーザーは、ページまたはタスク・フローの表示のみを行え、ユーザーまたはアプリケーションのカスタマイズは実行できません。

17.7.1.1 タスク・フローのセキュリティ

タスク・フローをカスタマイズ可能ページに追加すると、コンポーザは、タスク・フローおよびタスク・フローのページのコンポーネントを編集するオプションを提供します。保護されたアプリケーションでは、コンポーザは、カスタマイズ可能なページおよびタスク・フローに提供された権限に基づいて、編集機能を提供します。タスク・フロー権限およびコンポーザの動作の詳細は、表17-2を参照してください。

アプリケーション・ページで、コンポーネントは、JSPXページに直接またはタスク・フローなどの共有コンポーネント内のページ・フラグメントに配置できます。タスク・フロー内のコンポーネントに対する制限は、ページ・フラグメントから導出されます。タスク・フローのセキュリティについて理解を深めるには、図17-65に示すような、タスク・フローを含むページで、このタスク・フローが別のタスク・フローを含む例を検討します。

図17-65 ネストされたタスク・フローを含むページの構造

「図17-65 ネストされたタスク・フローを含むページの構造」の説明

このページのコンポーネントは次のようにセキュリティを継承します。

- 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によって定義されます。この権限クラスは、タスク・フローの操作にマップされる、タスク・フロー固有のアクションを定義します。デフォルトでは、表示権限のみがタスク・フローに与えられます。ユーザーが実行時にタスク・フローを編集できるようにするには、カスタマイズ権限がタスク・フローに付与されていることを確認する必要があります。詳細は、第19.3.1.1項「タスク・フローの追加に関する考慮事項」 および23.6項「タスク・フローのセキュリティの実装」を参照してください。

タスク・フローとそのセキュリティ動作の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

17.7.2 MDSのカスタマイズ制限

Frameworkアプリケーションには、すべてのアプリケーション・オブジェクトのアプリケーションのカスタマイズを制限するデフォルトのMDS構成があります。実行時のページ編集を有効にするには、Page Customizableコンポーネントをページに追加して、このデフォルトの制限を非アクティブにする必要があります。Page Customizableコンポーネントは、その下にあるすべてのコンポーネントのアプリケーションのカスタマイズを有効にします。ただし、ネストされたページまたはフラグメントのコンポーネントのカスタマイズは有効になりません。たとえば、Page Customizableがページ・テンプレートで使用されていて、その内部にFacet Refがある場合、Facet Ref内部のコンポーネントのカスタマイズはデフォルトで有効になりません。

MDSのタイプ・レベルの制限またはインスタンス・レベルの制限を使用して、コンポーネントの一連の属性に対するアプリケーションのカスタマイズを有効化できます。タイプ・レベルの制限は、インスタンス全体の指定されたコンポーネント・タイプに適用できます。実行時、カスタマイズを有効化した属性は、コンポーザで編集可能プロパティとして表示され、制限された属性は、選択したコンポーネントの「コンポーネント・プロパティ」ダイアログに表示されません。詳細は、第23.1項「カスタマイズ・ポリシーの定義によるコンポーネント・レベルの制限の適用」を参照してください。

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

Panel CustomizableコンポーネントおよびShow Detail Frameコンポーネントは、サポートされている個々のアクションに制限を行うことができます。たとえば、現在のユーザーがShow Detail Frameを最小化できるかどうかの制限を指定できます。

コンポーネントのアクションの制限を行うかどうかを決定できます。コンポーネントのアクションの制限はadf-config.xmlで指定できます。制限を指定して、現在のユーザーに適用可能な場合、Panel CustomizableまたはShow Detail Frameはアクションをレンダリングしません。

アクション・レベルの制限の適用の詳細は、第23.5項「Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用」を参照してください。

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

この章では、実行時にページの作成および管理を行うページ・サービスの使用方法について説明します。次の項が含まれます:

- 第18.1項「ページの作成と管理の概要」

- 第18.2項「ページおよびタスク・フローの作成」

- 第18.3項「ページ - 新規作成タスク・フローのパラメータの値の定義」

- 第18.4項「タスク・フローのビュー・ページの作成方法」

- 第18.5項「ページの管理」

- 第18.6項「カスタムのスタイルおよびテンプレートの概要」

- 第18.7項「ページ・サービス・ビューのカスタマイズ」

- 第18.8項「ページ・サービスの詳細情報」

- 第18.9項「ページ・サービスのサンプル」

18.1 ページの作成と管理の概要

ページ・サービスを使用すると、実行時にアプリケーションで新しいページおよびタスク・フローを作成できます。デフォルトまたはカスタムのスタイルおよびテンプレートに基づいてページを作成できます。これらは、ページ - 新規作成タスク・フローまたはページ・サービスAPIのいずれかを使用して作成できます。

ページまたはタスク・フローを作成した後、ユーザーは、ページ・サービス・データ・コントロールまたはページ・サービスAPIのいずれかを使用してこれを表示および管理できます。APIは、アプリケーション内にスコープと呼ばれる作業領域を定義する方法を提供します。スコープは、特定のチームまたはコミュニティを対象とするカスタム・ページを分類する際に便利です(Oracle WebCenter Portal: Spacesのグループ・スペースと似ています)。

表18-1では、ページ・サービスに含まれている開発者ツールについて説明します。

表18-1 ページ・サービスの開発者ツール

ツール

説明

ページ - 新規作成タスク・フロー

実行時にページまたはタスク・フローを作成するタスク・フロー。

PageServiceDCデータ・コントロール

実行時にリストされたページおよびタスク・フローに関する情報を表示または削除するためのデータ・コントロール。PageServiceDCは、設計時に、ページ・サービス・ライブラリをアプリケーションに追加した後で使用できます。

デフォルトでは、ページ・サービス・ライブラリは、WebCenter Portalのアプリケーション・テンプレートを使用するときまたはページ - 新規作成タスク・フローを追加するときにアプリケーションに追加されます。

ページ・サービスAPI

実行時にページおよびタスク・フローを作成および管理するためのAPI。

ページ・サービスは、多くのOracle WebCenter Portal: Services(リンク、検索、タグのサービスなど)と統合されます。最近のアクティビティ・サービスを使用してページでの最新の変更を追跡できます。最近のアクティビティ・サービスと組み合せて動作するように事前に構成されているため、ページ・サービスは、最近のアクティビティ・サービスが使用する情報を自動的に生成し、ページでの最新の追加、変更または削除を表示します。

実行時のサービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

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

ページ - 新規作成タスク・フローまたはページ・サービスAPIのいずれかを使用して、実行時にページおよびタスク・フローを作成できます。

注意:

ページ - 新規作成タスク・フローは、ページおよびタスク・フローを作成し、タスク・フローのパラメータを編集する方法を提供します。コピー、名前変更、スコープの作成などの操作を実行するには、ページ - 新規作成タスク・フローとともにページ・サービスAPIを使用する必要があります。ページ・サービスAPIは、ページ・サービス内のカスタマイズに柔軟性をもたらします。

ページ - 新規作成タスク・フローを使用すると、実行時に「ページの作成」ダイアログを起動できます。「ページの作成」ダイアログでは、ユーザーは、事前定義されたスタイル、スキームおよびテンプレートに基づいてページを作成できます。

ページのスタイル、スキームおよびテンプレートは、コンテンツを配置できる領域(つまり、ページ・レイアウト)を記述しているデフォルト・ページ構造とページのルック・アンド・フィールに寄与する背景色およびイメージの両方を提供します。ページを作成するときにページのスタイル、スキーム、スキームの背景色およびテンプレートを選択できます。さらに、ページ・レイアウトのコンポーネントを使用してページの有用性や体裁を向上できます。これらのコンポーネントには、インプレースHTMLテキスト・エディタ、イメージ、レイアウト・ボックス、ハイパーリンクなどが含まれます。

図18-1に、実行時の「ページの作成」ダイアログを示します。

図18-1 デフォルトのスタイルの「ページの作成」ダイアログ

「図18-1 デフォルトのスタイルの「ページの作成」ダイアログ」の説明

一部のページ・スタイルには、ページ特有の用途を示すプロパティが含まれます。たとえば、Webページ・スタイルには、URLを指定するための構成可能なプロパティが含まれます。多くの用途の中で、Webページ・スタイルはWikiページまたはブログのページを埋め込んだり、アプリケーション内の外部Webコンテンツを公開する手段を提供します。多くの場合、ページの改訂時にページ・スキーム、スキームの背景色およびレイアウトを切り替えることができます。空白のページで開始し、最初からレイアウト、ルック・アンド・フィールを作成することもできます。

実行時、ページ - 新規作成タスク・フローを使用して作成したページのリストを表示し、これらのページを作成、コピー、更新または削除できます。

詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページの作成および管理に関する項を参照してください。

18.2.1 ページの作成方法

この項では、ページ - 新規作成タスク・フローをアプリケーションに追加して、実行時にページを作成できるようにする方法を説明します。次のサブセクションが含まれます:

- 第18.2.1.1項「ページ - 新規作成タスク・フローの追加方法」

- 第18.2.1.2項「ページ・サービスのセキュリティの設定」

- 第18.2.1.3項「実行時のページの作成方法」

- 第18.2.1.4項「実行時に作成したページの構造」

- 第18.2.1.5項「実行時に作成したページにアクセスする方法」

18.2.1.1 ページ - 新規作成タスク・フローの追加方法

ページ - 新規作成タスク・フローをWebCenterアプリケーションに追加するには:

1. 第5.3項「ポータルへのページの追加」に記載された手順に従います。

2. サービスを追加するカスタマイズ可能ページを開きます。

3. リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

4. 「ページ - 新規作成」タスク・フローをページにドラッグ・アンド・ドロップします。

5. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

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

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

8. アプリケーションを実行し、「ページの作成」がページに表示されることを確認します。

9. 「ページの作成」をクリックします。
「ページの作成」ダイアログが開きます(図18-1を参照)。

10. ページ名を入力し、スキーム、スキームの背景色およびテンプレートを選択します。

11. 「作成」をクリックします。
選択した情報に基づいてページが作成されます。ページが作成される場所の詳細は、第18.2.1.4項「実行時に作成したページの構造」を参照してください。

注意:

タスク・フローを追加した後、タスク・フローのパラメータを編集できます。ページ - 新規作成タスク・フローのパラメータの詳細は、第18.3項「ページ - 新規作成タスク・フローのパラメータの値の定義」を参照してください。

ページの詳細情報(実行時に作成したページの削除方法など)は、第18.5項「ページの管理」を参照してください。

18.2.1.2 ページ・サービスのセキュリティの設定

ページ・サービスは、ADFセキュリティの独自の固有の構成を必要としません。これは、Frameworkアプリケーションのセキュリティ設定に従います。保護されていないアプリケーションでは、「ページの作成」ダイアログで作成されたすべてのページは、データ・コントロールに表示され、すべての人が表示できます。保護されているアプリケーションでは、ユーザーは、自分で作成したページまたは権限を付与されているページのみを表示できます。

アプリケーションおよびページ - 新規作成タスク・フローを保護するには:

1. 第7.2.1.1項「サービスのセキュリティの実装」の手順に従います。

2. アプリケーション・ページにページ - 新規作成タスク・フローを追加した後、アプリケーション・リソースで「jazn-data.xml」ファイルをダブルクリックし、ADFセキュリティ・ポリシー・エディタを開きます。

3. 必要に応じて、「タスク・フロー」タブをクリックしてこれを表示します。

4. 「タスク・フロー列で、page-create-newタスク・フロー(図18-2)を選択します。

図18-2 権限のページ - 新規作成タスク・フローへの追加

「図18-2 権限のページ - 新規作成タスク・フローへの追加」の説明

5. 「ロールに付与済」で「追加」アイコンをクリックし、タスク・フローのアクセス権限を付与するユーザー・ロールを追加します。

6. ユーザー・ロールを追加した後、「ADFセキュリティ・ポリシー」ダイアログでロールを選択し、「アクション」で、選択したロールに適用する権限を選択します。

7. 「Webページ」タブをクリックし、ページ - 新規作成タスク・フローを追加したページにセキュリティを適用します(図18-3)。
手順3から6で説明した同じ手順(ページの選択、ロールの追加、権限の適用)に従います。

図18-3 ページ - 新規作成タスク・フローを使用した権限のページへの追加

「図18-3 ページ - 新規作成タスク・フローを使用した権限のページへの追加」の説明

注意:

PageServiceDCデータ・コントロールは、保護されたアプリケーションまたは保護されていないアプリケーションに対するセキュリティ設定を必要としません。

18.2.1.3 実行時のページの作成方法

詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページの作成に関する項を参照してください。

18.2.1.4 実行時に作成したページの構造

ページ - 新規作成タスク・フローまたはページ・サービスAPIを使用して実行時に作成したページは、アプリケーションのルートの下にあるmdsフォルダに格納されます。表18-2に、ページおよびタスク・フローのファイル名に使用されるデフォルトの書式の例を示します。

表18-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)の構造を示しています。

例18-1 デフォルトのスコープで作成されたページ

mds\oracle\webcenter\page\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\user\user1\Page1.jspx

例18-2 デフォルトのスコープで作成されたページ定義

mds\pageDefs\oracle\webcenter\page\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\user\user1\Page1PageDef.xml

例18-3 カスタム・スコープで作成されたページ

mds\oracle\webcenter\page\scopedMD\<scopeGUID>\Page1.jspx

例18-4 カスタム・スコープで作成されたページ定義

mds\pageDefs\oracle\webcenter\page\scopedMD\<scopeGUID>\Page1PageDef.xml

例18-4で、scopeGUIDは、ページ・サービスによって特定のスコープに割り当てられた一意のIDです。

例18-5 デフォルトのスコープで作成されたタスク・フローのビュー・ページ

mds\oracle\webcenter\page\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\user\user1\Page1.jspx

例18-6 デフォルトのスコープで作成されたタスク・フロー定義

mds\oracle\webcenter\page\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\user\user1\Page1.xml

例18-7 デフォルトのスコープで作成されたタスク・フローのビュー・ページ定義

mds\pageDefs\oracle\webcenter\page\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\user\user1\Page1PageDef.xml

例18-8 カスタム・スコープで作成されたタスク・フローのビュー・ページ

mds\oracle\webcenter\page\scopedMD\<scopeGUID>\Page1.jspx

例18-9 カスタム・スコープで作成されたタスク・フローの定義

mds\oracle\webcenter\page\scopedMD\<scopeGUID>\Page1.xml

例18-10 カスタム・スコープで作成されたタスク・フローのページ定義

mds\pageDefs\oracle\webcenter\page\scopedMD\<scopeGUID>\Page1PageDef.xml

例18-10で、scopeGUIDは、ページ・サービスによって特定のスコープに割り当てられた一意のIDです。

18.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

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

この項では、ページ - 新規作成タスク・フローのパラメータの値にアクセスし、これを定義する方法を説明します。次のサブセクションが含まれます:

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

- 第18.3.2項「ページ - 新規作成タスク・フローのスコープの設定」

- 第18.3.3項「結果パラメータの設定」

- 第18.3.4項「スタイルの指定」

- 第18.3.5項「ADFテンプレートの指定」

- 第18.3.6項「コマンド・リンクの表示」

- 第18.3.7項「イメージの表示」

- 第18.3.8項「ラベルのカスタマイズ」

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

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

1. アプリケーション・ナビゲータに移動し、「ページ - 新規作成」タスク・フローで.jspxページを右クリックします。

2. 「ページ定義に移動」を選択し、スクロールして「ページの作成」タスク・フローを選択します。

3. 「編集」(鉛筆)アイコンをクリックし、任意のパラメータを編集します。
設計ビューの「ページ・データ・バインディング定義」を図18-4に示します。

図18-4 ページ・データ・バインディング定義

「図18-4 ページ・データ・バインディング定義」の説明

図18-5に示すように、「タスク・フロー・バインディングの編集」ダイアログが開きます。

図18-5 「ページ - 新規作成」タスク・フローの「タスク・フロー・バインディングの編集」

「図18-5 「ページ - 新規作成」タスク・フローの「タスク・フロー・バインディングの編集」」の説明

次のページ - 新規作成のオプション・パラメータを使用できます。

- scopename
詳細は、第18.3.2項「ページ - 新規作成タスク・フローのスコープの設定」を参照してください。

- outcome
詳細は、第18.3.3項「結果パラメータの設定」を参照してください。

- templatefile
詳細は、第18.3.4項「スタイルの指定」を参照してください。

- adftemplate
詳細は、第18.3.5項「ADFテンプレートの指定」を参照してください。

- uitype
詳細は、第18.3.6項「コマンド・リンクの表示」を参照してください。

- icon
詳細は、第18.3.7項「イメージの表示」を参照してください。

- label
詳細は、第18.3.8項「ラベルのカスタマイズ」を参照してください。

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

デフォルトでは、ページ - 新規作成タスク・フローを使用して作成したページおよびタスク・フローはデフォルトのスコープに格納されます。ページ - 新規作成タスク・フローに特定のスコープを割り当てるには、図18-6に示すように、スコープ名をoracle_webcenter_page_createpage_scopenameパラメータに割り当てる必要があります。

図18-6 oracle_webcenter_page_createpage_scopenameパラメータ

「図18-6 oracle_webcenter_page_createpage_scopenameパラメータ」の説明

図18-6で、PageViewBeanは、getScopeName()メソッドを起動してscopeNameの値をフェッチするカスタム・マネージドBeanです。これは、ページ・サービスAPIを使用します。これを実行することによって、ページ - 新規作成タスク・フローは、すべてのページおよびタスク・フローをデフォルトのスコープではなく指定したスコープの下に作成します。

次のサンプル・コードは、スコープの作成のみを強調しています。スコープがすでに存在する場合、ユーザーは、スコープ名をScopeオブジェクトから取得できます。

例18-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;
}

}

18.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());
}

}
}

18.3.4 スタイルの指定

ページ・サービスには、ページ・サービス・ライブラリ内にパッケージ化されている、即時利用可能なスタイルが用意されています。これらのスタイルを使用するかまたは独自のカスタム・スタイルを作成できます。

この項では、即時利用可能なスタイルおよびカスタム・スタイルの適用方法を説明します。次のサブセクションが含まれます:

- 第18.3.4.1項「デフォルトのスタイル」

- 第18.3.4.2項「カスタムのスタイル」

注意:

スタイルの詳細は、第18.6項「カスタムのスタイルおよびテンプレートの概要」を参照してください。

18.3.4.1 デフォルトのスタイル

次のデフォルトのスタイルが提供されます(図18-1を参照)。

- 空白

- 左を狭く

- 右を狭く

- 3列

- ストレッチ

- テキスト・ページ

- Webページ

即時利用可能なスタイルをページ - 新規作成タスク・フローと関連付けるには、オプションのパラメータoracle_webcenter_page_createpage_templatefileを使用します。このパラメータ値を使用して即時利用可能なスタイルのリストを含むファイルの場所を指定します。

即時利用可能なスタイルをページ - 新規作成タスク・フローと関連付けるには:

1. mystylesという名前のフォルダを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: この属性は、スタイルのイメージ・アイコンを指定します。
即時利用可能なスタイルの場合、スタイルのアイコンを指定しないと、ページ・サービスは、即時利用可能なスタイルそれぞれに割り当てられたデフォルトのアイコンを自動的に使用します。

例18-12にその他の即時利用可能なスタイルをリストしているサンプルのdefault_pageservice_styles.xmlファイルの内容を示します。

例18-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. 第18.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」をクリックします。

18.3.4.2 カスタムのスタイル

この例では、Newsというラベルの付いたカスタム・スタイルをページ - 新規作成タスク・フローと関連付けます。

カスタム・スタイルをページ - 新規作成タスク・フローと関連付けるには:

1. .jspxファイルでカスタム・スタイルを定義します(たとえば、NewsTemplate.jspx)。

注意:

ADFテンプレートの作成方法の詳細は、第18.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ファイルで使用する構文の詳細は、第18.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フォルダの下に配置する必要はありません。第18.3.5項「ADFテンプレートの指定」に従って、ファイルに異なる場所を指定できます。

5. 第18.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'}

18.3.5 ADFテンプレートの指定

設計時と実行時の両方のページで同じテンプレートを使用する場合、ADFテンプレートを使用できます。必要なことは、ページ - 新規作成タスク・フローがテンプレートの場所を指すようにすることのみです。

ADFテンプレートをページ - 新規作成タスク・フローと関連付けるには:

1. 第18.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」の説明のとおりに、「タスク・フロー・バインディングの編集」ダイアログを開きます。

2. oracle_webcenter_page_creatpage_adftemplateパラメータの隣の「値」列で、ADFテンプレートへのパスを入力します。
例:

${'templates/portalTemplate.jspx'}

図18-7では、portalTemplate.jspxというADFテンプレートが使用されます。

図18-7 oracle_webcenter_page_createpage_adftemplateパラメータ

「図18-7 oracle_webcenter_page_createpage_adftemplateパラメータ」の説明

ADFテンプレートはアプリケーションのpublic_htmlフォルダにあります。この場合、portalTemplate.jspxのパスは、../public_html/templates/portalTemplate.jspxです。

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

18.3.6 コマンド・リンクの表示

デフォルトでは、ページ - 新規作成タスク・フローはコマンド・ボタンとしてレンダリングされます。かわりに、これをコマンド・リンク(図18-8)としてレンダリングすることを指定できます。

図18-8 コマンド・リンク

「図18-8 コマンド・リンク」の説明

ページ - 新規作成タスク・フローをコマンド・リンクとしてレンダリングするには:

1. 第18.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」の説明のとおりに、「タスク・フロー・バインディングの編集」ダイアログを開きます。

2. oracle_webcenter_page_createpage_uitypeパラメータを次の値に修正します: ${'link'}。
例:

oracle_webcenter_page_createpage_uitype = ${'link'}

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

18.3.7 イメージの表示

アイコンをページ - 新規作成タスク・フロー・ボタンまたはリンクと関連付けることができます。たとえば、図18-9に、ページ・アイコンが付いたコマンドlinkとしてレンダリングされるタスク・フローを示します。

図18-9 ページ・アイコンが付いたコマンド・リンク

「図18-9 ページ・アイコンが付いたコマンド・リンク」の説明

図18-10にページ・アイコンを備えたコマンド・ボタンとしてレンダリングされたタスク・フローを示します。

図18-10 ページ・アイコンを備えたコマンド・ボタン

「図18-10 ページ・アイコンを備えたコマンド・ボタン」の説明

「ページ - 新規作成」タスク・フロー・ボタンまたはリンクのアイコンを指定するには:

1. 第18.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」の説明のとおりに、「タスク・フロー・バインディングの編集」ダイアログを開きます。

2. oracle_webcenter_page_createpage_iconパラメータを次の値に修正します: {'/images/page.jpg'}。
例:

oracle_webcenter_page_createpage_icon = ${'/images/page.jpg'}

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

18.3.8 ラベルのカスタマイズ

デフォルトでは、ページ - 新規作成タスク・フローのコマンド・ボタンまたはリンクのラベルは「ページの作成」です。oracle_webcenter_page_createpage_labelパラメータ値を使用して、独自の値を指定できます。

図18-11にカスタム・ラベルを備えたコマンド・ボタンとしてレンダリングされたタスク・フローを示します。

図18-11 カスタム・ラベル

「図18-11 カスタム・ラベル」の説明

コマンド・ボタンまたはリンクのラベルを変更するには:

1. 第18.3.1項「ページ - 新規作成タスク・フローのパラメータにアクセスする方法」の説明のとおりに、「タスク・フロー・バインディングの編集」ダイアログを開きます。

2. oracle_webcenter_page_createpage_labelパラメータを希望する文字列値に修正します。
例:

oracle_webcenter_page_createpage_label = ${'Create New Page'}

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

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

タスク・フローのビュー・ページの作成には、次のタイプのオブジェクトが必要です。

- タスク・フローのビュー・ページ(JSFFファイル)

- ページ・ビューのページ定義

- タスク・フローを定義するタスク・フロー定義XMLファイル

ページ - 新規作成タスク・フローによりタスク・フローのビュー・ページの作成を有効にするには:

1. 設計時に、ページ - 新規作成タスク・フローをページ(home.jspx)に追加します。

2. 第18.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: タスク・フローのイメージ・アイコンを指定します

注意:

サンプル属性構文は、第18.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. タスク・フローのタイトルを入力し、「ニュース」スタイルを選択し(第18.3.4.2項「カスタム・スタイル」を参照)、「作成」をクリックします。
新しいタスク・フローのビュー・ページがレンダリングされます。

タスク・フローが作成される場所の詳細は、第18.2.1.4項「実行時に作成したページの構造」を参照してください。

18.5 管理ページ

ページ・サービス・データ・コントロールまたはページ・サービスAPIのいずれかを使用してページを管理できます。この項には次のサブセクションが含まれます:

- 第18.5.1項「ページ・サービス・データ・コントロールを使用したページの管理」

- 第18.5.2項「ページ・サービスAPIを使用したページおよびタスク・フローの管理」

18.5.1 ページ・サービス・データ・コントロールを使用したページの管理

ページ・サービス・データ・コントロールを使用してページ・サービス・ビューをカスタマイズできます。データ・コントロールを使用すると、実行時に既存のページの情報を表示したり、リストされたページを削除することができます。ページ・サービス・データ・コントロール(PageServiceDC)は、ページ・サービス・ライブラリに含まれていて、設計時、このライブラリをアプリケーションに追加した後に使用できます。

ページ・サービス・データ・コントロールの詳細は、第18.8.2項「ページ・サービス・データ・コントロールの使用」を参照してください。

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

ページ・サービスは、ページおよびタスク・フローを管理するAPIを提供します。これらには、ページおよびタスク・フローの削除、非表示ステータスの変更、ページ・スキーム(名前、背景色、背景イメージ)の変更およびページのコピーを行うAPIが含まれています。

ページ・サービスAPIの詳細は、第18.8.1項「ページ・サービスJava APIの使用方法」を参照してください。

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

実行時に、ユーザーが「ページの作成」オプションをクリックすると、「ページの作成」ダイアログにページを作成するための一連の事前定義済スタイルが表示されます(図18-1を参照)。ユーザーは、これらのページ・スタイルの1つを選択し、関連するスタイルのテンプレートに基づいてページを作成します。スタイルは、ページに特別なルック・アンド・フィールを提供します。テンプレートは、ページ・レイアウトを提供します。テンプレートは、実行時ページの基になるADFページです。ページは、デフォルトまたはカスタムのスタイルおよびテンプレートに基づくことができます。

「ページの作成」ダイアログにカスタムの選択肢を用意するには、それを、たとえば/mytemplates/templates.xmlで定義する必要があります。ディレクトリ/mytemplatesはWebコンテンツのルートの下に配置してください。

「ページの作成」ダイアログで使用可能なデフォルトのオプションを使用しないことを選択した場合、次のタイプのカスタム・テンプレートをアプリケーションで使用できます。

- 実行時ページで使用するページおよびページ・フラグメントのテンプレート

- ページおよびページ・フラグメントのテンプレートのベースとして使用するADFテンプレート

- 「ページの作成」ダイアログ自体が使用するテンプレート

この項では、ページ - 新規作成タスク・フローをカスタマイズし、「ページの作成」ダイアログおよび実行時に作成した新しいページに様々なテンプレートを使用する方法を説明します。次のサブセクションが含まれます:

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

- 第18.6.2項「ADFテンプレートの使用方法」

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

注意:

templates.xmlファイルの詳細は、第18.3.4項「スタイルの指定」を参照してください。

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

設計の要件に応じてカスタム・ページ・テンプレートを作成し、ページ・スタイルをこれらのテンプレートと関連付けることができます。「ページの作成」ダイアログのスタイル・オプションを制限するか、または様々なスタイル・セットを提供する場合、次の高水準のタスクを実行する必要があります。

- 様々なページ・スタイル用のテンプレートとして使用するページまたはページ・フラグメントを作成します。

- 「ページの作成」ダイアログのパラメータを編集して、新しいページ・スタイルを指定します。

この項では、両方の手順を行います。次のサブセクションが含まれます:

- 第18.6.1.1項「ページまたはページ・フラグメントのスタイルを作成する方法」

- 第18.6.1.2項「「ページの作成」ダイアログのスタイルの編集方法」

18.6.1.1 ページまたはページ・フラグメントのスタイルを作成する方法

ページまたはページ・フラグメントのスタイルを作成するには:

1. Oracle JDeveloperで、必要なすべての情報(ヘッダー、ようこそメッセージ、ログイン/ログアウトのリンクなど)を含むJSFテンプレートを作成します。

2. ページを作成するとき、そのテンプレートに基づいてページ(JSPX)を作成します。
タスク・フローを作成するとき、そのテンプレートに基づいてページ・フラグメント(JSFF)を作成します。

テンプレートに基づいてページを作成するとき、ページ・サービスは、実際にテンプレートをコピーし、これに基づいて新しいページを作成します。

3. 必要なすべての内容をJSPXファイルまたはJSFFファイルに入れます。
たとえば、コンテンツを表示するファセットがある場合、Page Customizableコンポーネントをコンポーザからその周囲にドロップし、実行時にページを編集可能にできます。document title、styleClassおよびinlineStyleの各属性に正しい値を設定したことを確認します。

注意:

このページまたはページ・フラグメントが実行時にカスタマイズできるページのテンプレートとして使用される場合、このページまたはフラグメントのすべてのコンポーネントのID属性が一意の値に設定されていることを確認する必要があります。

例18-13にページ・フラグメントのスタイルpstemplateview.jsffのサンプル・コードを示します。

例18-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テンプレートに基づくことができます。

例18-14にADFテンプレートのサンプル・コードを示します。

注意:

独自のADFテンプレートを設計することを選択してページ・スタイルを設定する場合、Panel Group LayoutコンポーネントまたはPanel Stretch LayoutコンポーネントをPage Customizableの直接の子として持つ必要があります。また、次に太字で示すように、styleClassおよびinlineStyleのプレースホルダーを設定する必要があります。ページ・スタイル値はプレースホルダー・テキストを置き換えます。

例18-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>

例18-15にADFテンプレートportalTemplate.jspxに基づくページ・スタイルNewsTemplate.jspxのサンプル・コードを示します。af:pageTemplateタグのviewId属性は、使用されるADFテンプレートの名前を指定します。

ADFテンプレートの使用方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。

例18-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ファイルの詳細は、第18.3.4項「スタイルの指定」を参照してください。

例18-16にサンプルのtemplates.xmlファイルを示します。

例18-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>

18.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テンプレートに基づきます。

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

ページ・テンプレートがADFテンプレートに基づいている場合、ページ作成タスク・フローを構成して、ユーザーやスコープなどの異なる条件に応じて、異なるADFテンプレートを使用できます。

次のいずれかの方法で実行時ページ作成に使用するADFテンプレートを指定できます。

- ページ作成タスク・フローでoracle_webcenter_page_createpage_adftemplateパラメータを使用(第18.3.4項「スタイルの指定」を参照)。

- createPage() APIおよびcreateTaskflow() APIでADFTemplateViewIDパラメータを使用。

ADFテンプレートに基づいたJSPXページ・テンプレートには、viewId属性が指定されたaf:pageTemplateタグが含まれています。viewId属性には、このADFテンプレートの名前が含まれています。例18-15にADFテンプレートportalTemplate.jspxに基づいたページ・テンプレートを示します。

ページ作成時に使用するADFテンプレート名を指定すると、ページ・サービスは、ページ・テンプレートでaf:pageTemplateタグを探し、指定した値を持つviewId属性を更新します。

この項では、指定された状況でどのADFテンプレートを使用するかを指定する方法を説明します。次のサブセクションが含まれます:

- 第18.6.2.1項「タスク・フローのパラメータを使用してADFテンプレート名を指定する方法」

- 第18.6.2.2項「APIパラメータを使用してADFテンプレート名を指定する方法」

18.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」をクリックします。

18.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です。

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

独自のページ・スタイルを使用するには、これを/mytemplates.templates.xmlファイルで定義します。異なるページ・スタイルのセットを持つ個々のXMLファイルを管理する場合、XMLファイルを作成し、これをページ - 新規作成タスク・フローから参照できます。たとえば、異なる権限を持つ2人のユーザーに2つの異なるオプションを表示するには、2つのXMLファイルを作成し、各XMLファイルで異なるスタイルを定義する必要があります。これで「ページの作成」ダイアログで各ユーザーにそれぞれのオプションを表示できます。

この項では、実行時の「ページの作成」ダイアログの新しいスタイルを作成してこれを参照する方法を説明します。次のサブセクションが含まれます:

- 第18.6.3.1項「「ページの作成」ダイアログのスタイルを作成する方法」

- 第18.6.3.2項「新しいスタイルをページ - 新規作成タスク・フローから参照する方法」

18.6.3.1 「ページの作成」ダイアログのスタイルを作成する方法

「ページの作成」ダイアログのスタイルを作成するには:

1. /mytemplatesディレクトリで、XMLファイル(たとえばtemplates2.xml)を作成します。

2. templatesDef要素を追加し、その中に「ページの作成」ダイアログに含める各スタイルのtemplateDefエントリを追加します。
例18-17に、前の項で作成したpstemplateview.jsffフラグメントを参照するサンプルのXMLファイルtemplates2.xmlに入力するコードを示します。

例18-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ファイルを保存します。

18.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を作成します。実行時に、図18-12および図18-13に示すように、user1およびuser2には、「ページの作成」ダイアログの異なるオプションがそれぞれ表示されます。

図18-12 templates.xmlスタイルを使用した「ページの作成」ダイアログ

「図18-12 templates.xmlスタイルを使用した「ページの作成」ダイアログ」の説明

図18-13 templates2.xmlスタイルを使用した「ページの作成」ダイアログ

「図18-13 templates2.xmlスタイルを使用した「ページの作成」ダイアログ」の説明

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

6. 「すべて保存」をクリックして作業を保存します。

18.7 ページ・サービス・ビューのカスタマイズ

この項では、ページ・サービス・ビューをカスタマイズする様々な方法を説明します。次のサブセクションが含まれます:

- 第18.7.1項「ADF Facesコンポーネントを使用したページのレンダリング」

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

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

ADF Facesコンポーネントを使用して実行時ページをレンダリングできます。たとえば、ADF Facesコンポーネントを使用して、ページをタブ、リンクおよびイメージ・リンク(すなわち、ページのサムネイル・ビュー)としてレンダリングできます。この項では、ADF Facesコンポーネントを使用して作成できるページのタイプの例を示します。次のサブセクションが含まれます:

- 第18.7.1.1項「ADF Facesコンポーネントを使用したページのタブとしてのレンダリング」

- 第18.7.1.2項「ADF Facesコンポーネントを使用したページのリンクとしてのレンダリング」

- 第18.7.1.3項「ADF Facesコンポーネントを使用したページのイメージ・リンクとしてのレンダリング」

18.7.1.1 ADF Facesコンポーネントを使用したページのタブとしてのレンダリング

アプリケーションを設計してページをタブとしてのレンダリングするとき、広範なADF Facesコンポーネントを使用してこれを実現できます。この項では、ページのタブとしてのレンダリングをサポートするADF Facesコンポーネントについて説明します。次のサブセクションが含まれます:

- 第18.7.1.1.1項「af:navigationPaneを使用したページのタブとしてのレンダリング」

- 第18.7.1.1.2項「af:panelTabbedを使用したページのタブとしてのレンダリング」

18.7.1.1.1 af:navigationPaneを使用したページのタブとしてのレンダリング

例18-18は、navigationPaneコンポーネントを使用して、ページをタブとしてどのようにレンダリングできるかについて説明しています。

ここでは、ページ・リストの取得に、カスタムBean (MyPageServiceBean)のpagesというメソッドが使用されます。ページ・サービスAPIを使用してページのリストを取得する方法の詳細は、ページ・サービスAPIの項のgetPages()メソッドを参照してください。

例18-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>

図18-13に示されているコードの出力は、一連のタブとしてレンダリングされます(図18-14)。

図18-14 ページのタブとしてのレンダリング

「図18-14 ページのタブとしてのレンダリング」の説明

18.7.1.1.2 af:panelTabbedを使用したページのタブとしてのレンダリング

例18-19は、navigationPaneコンポーネントを使用してページをタブとしてどのようにレンダリングできるかについて説明しています。

ここでは、ページ・リストの取得に、カスタムBean (MyPageServiceBean)のpagesというメソッドが使用されます。ページ・サービスAPIを使用してページのリストを取得する方法の詳細は、ページ・サービスAPIの項のgetPages()メソッドを参照してください。

例18-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>

例18-19のコードの出力は、一連のタブとしてレンダリングされます(図18-15)。

図18-15 ページのaf:panelTabbedコンポーネントとしてのレンダリング

「図18-15 ページのaf:panelTabbedコンポーネントとしてのレンダリング」の説明

18.7.1.2 ADF Facesコンポーネントを使用したページのリンクとしてのレンダリング

この項では、ADF Facesコンポーネントを使用してページを様々なタイプのリンクとしてレンダリングする例を示します。次のサブセクションが含まれます:

- 第18.7.1.2.1項「af:commandLinkを使用したページのリンクとしてのレンダリング」

- 第18.7.1.2.2項「af:goLinkを使用したページのリンクとしてのレンダリング」

18.7.1.2.1 af:commandLinkを使用したページのリンクとしてのレンダリング

例18-20は、af:commandLinkを使用してページをリンクとしてどのようにレンダリングできるかについて説明しています。

例18-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>

例18-20に示されているコードの出力は、リンクのリストとしてレンダリングされます(図18-16)。

図18-16 ページのリンクとしてのレンダリング

「図18-16 ページのリンクとしてのレンダリング」の説明

18.7.1.2.2 af:goLinkを使用したページのリンクとしてのレンダリング

例18-21は、af:goLinkを使用してページをリンクとしてどのようにレンダリングできるかについて説明しています。

例18-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>

例18-21に示されているコードの出力は、リンクのリストとしてレンダリングされます(図18-16)。

18.7.1.3 ADF Facesコンポーネントを使用したページのイメージ・リンクとしてのレンダリング

イメージ・リンクは、フル・ページ・ビューにアクセスするためにユーザーがクリックする、ページのリンクされたサムネイル・ビューです。例18-22は、ページをイメージ・リンクとしてどのようにレンダリングできるかについて説明しています。

例18-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>

例18-22で、pageCountは、現在のスコープでページ数を取得するカスタムBean (MyPageServiceBean)からのメソッドです。ユーザーは、ページ・サービスAPIから他のメソッドを使用してこのメソッドを自分で書き込む必要があります。

例18-22で、<image_name>は、ページを関連付けるイメージの名前です。

例18-22のコードの出力は、ページの一連のリンクされたサムネイル・ビューとしてレンダリングされます(図18-17)。

図18-17 ページのイメージ・リンクとしてのレンダリング

「図18-17 ページのイメージ・リンクとしてのレンダリング」の説明

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

コンポーザの一部であるセキュリティ・パネルまたはページ・サービスAPIのいずれかを使用して、ページおよびタスク・フローへのアクセスを管理できます。

実行時のセキュリティの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページ・アクセスの設定に関する項を参照してください。

ページ・サービスAPIを使用したページ・アクセスの設定の詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

18.8 ページ・サービスの詳細情報

この項では、ページ・サービスで使用できるAPIおよびデータ・コントロールについて説明します。次の項が含まれます:

- 第18.8.1項「ページ・サービスJava APIの使用方法」

- 第18.8.2項「ページ・サービス・データ・コントロールの使用方法」

18.8.1 ページ・サービスJava APIの使用方法

この項では、ページ・サービスJava APIについて説明します。ここでは、これらのAPIの場所、アプリケーションでこれらを使用できるようにする方法およびこれらを使用してページを作成する方法について説明します。次のサブセクションが含まれます:

- 第18.8.1.1項「ページ・サービスAPIを使用するために必要な構成設定」

- 第18.8.1.2項「ページ・サービスAPIの概要」

- 第18.8.1.3項「ページ・サービスAPIを使用するようにアプリケーションを設定する方法」

- 第18.8.1.4項「例: ページを作成する方法」

18.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ファイルにこれらのエントリが存在しない場合、テキスト・エディタを使用してこれらを追加します。

18.8.1.2 ページ・サービスAPIの概要

ページ・サービスAPIは、oracle.webcenter.page.model.PageServiceクラスにあります。

ページ・サービスには、次のAPIが用意されています。

- createPage: 第18.8.1.4項「例: ページを作成する方法」を参照

- deletePage

- createTaskflow - 例18-23「ページ・サービスAPIを使用したタスク・フローのビュー・ページの作成」を参照

- deleteTaskflow

- createScope

- deleteScope

- copyPage

- getPageList - 例18-24「ページ・サービスAPIを使用したページのリストの取得」を参照

- setPageTitle - 例18-25「ページ・サービスAPIを使用したページのタイトルの設定」を参照

- changeHiddenStatus

- changePageScheme - 例18-26「ページ・サービスAPIを使用したページのスキームの設定」を参照

- setPageAccess

ページ・サービスAPIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

例18-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。

例18-24 ページ・サービスAPIを使用したページのリストの取得

PageDef getPageList(String path)

ここで

- pathは、ユーザーがどのパスの下の閲覧できるすべてのページのリストを表示するのかを示すパス。パスを指定しないと、現在のスコープでユーザーが表示できるすべてのページのリストが戻されます。

現在のスコープまたは特定のパスの下で非表示ではないすべてのページのリストが戻されます。

例18-25 ページ・サービスAPIを使用したページのタイトルの設定

setPageTitle(String pagepath, String title)
throws InvalidNameException, ObjectChangedException, LockUnavailableException, oracle.webcenter.framework.translations.exception.TranslationsException;

ここで

- pagepathは、タイトルを変更するページのパスです。

- titleは、ページの新しい名前です。

ページの名前が更新され、次のものがスローされます。

- 指定された名前を更新に使用できない場合、InvalidNameException。

- 最後に取得されてからページが変更されている場合、ObjectChangedException。

- 別のページの操作が進行中の場合、LockUnavailableException。

例18-26 ページ・サービスAPIを使用したページのスキームの設定

setPageScheme(String pagepath, String schemeName, String schemeBGImage, String schemeBGColor, String otherCSS)

ここで

- pagepathは、スキームを変更するページのパスです。

- schemeNameは、ページのCSSの名前です。

- schemeBGImageは、カスタム・スキームの背景イメージです。

- schemeBGColorは、カスタム・スキームの背景色です。

- otherCSSは、指定するその他のCSS属性です。

jspxページでページのスキーム・プロパティが更新されます。

18.8.1.3 ページ・サービスAPIを使用するようにアプリケーションを設定する方法

ページ・サービスAPIを使用するには、JDeveloperアプリケーションにWebCenter Portalのページ・サービス拡張機能が存在している必要があります。JDeveloperで、「ヘルプ」→「バージョン情報」メニューに進み、「拡張機能」タブをクリックします。図18-18に示すように、「WebCenterページ・サービス」を探します。

図18-18 JDeveloper拡張機能

「図18-18 JDeveloper拡張機能」の説明

注意:

WebCenter Portalの拡張機能の追加の詳細は、第3章「開発環境の準備」を参照してください。

ページ・サービスがWebCenter Portalの拡張機能に含まれていることを確認した後、ページ・サービス・ライブラリをプロジェクトに追加する必要があります。

プロジェクトにページ・サービス・ライブラリを追加するには:

1. 「ViewController」プロジェクトを右クリックし、「プロジェクト・プロパティ」、「ライブラリとクラスパス」の順に選択します。

2. 「ライブラリの追加」をクリックし、図18-19に示すように、「WebCenterページ・サービス」およびWebCenterページ・サービス・ビュー・ライブラリを選択します。

図18-19 ページ・サービス・ライブラリの追加

「図18-19 ページ・サービス・ライブラリの追加」の説明

3. 「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

18.8.1.4 例: ページを作成する方法

この項では、ページ・サービスAPIを使用してページを作成する方法の例を示します。要件によっては別のメソッドが必要な場合があります。PageServiceオブジェクトで必要なメソッドを起動するモデルとして、このサンプル・コードではcreatePageメソッドを起動する方法を使用します。

通常、ページ・サービスAPIを使用して作成されるページは、テンプレートに基づきます。APIを使用してページの作成を開始する前に、各テンプレート・ファイル(MyPageTemplate1.jspxなど)が、JSPXページと同じディレクトリにページ定義ファイル(この場合MyPageTemplate1PageDef.xml)を持っていることを確認する必要があります。

例18-27に、createPage() APIを使用してMyScopeというスコープを作成し、MDSセッション・インスタンスを作成して、この新しいスコープを持つページ・サービス・クラスをインスタンス化し、このスコープ内にページを作成する方法を示します。新しいページは、MyPageTemplate1.jspxテンプレートに基づいて作成されます。

例18-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リファレンスを参照してください。

18.8.2 ページ・サービス・データ・コントロールの使用方法

ページ・サービス・データ・コントロールを使用すると、実行時に既存のページの情報を表示したり、リストされたページを削除することができます。

この項では、ページ・サービス・データ・コントロールをプロジェクトに追加する方法およびこれを使用してページを表示、編集および削除する方法を説明します。次のサブセクションが含まれます:

- 第18.8.2.1項「ページ・サービス・データ・コントロールを追加する方法」

- 第18.8.2.2項「実行時にページを表示、編集および削除する方法」

18.8.2.1 ページ・サービス・データ・コントロールを追加する方法

この項では、設計時にページ・サービス・データ・コントロールを追加する例を示します。

プロジェクトにページ・サービス・データ・コントロールを追加するには:

1. アプリケーション・ナビゲータにPageServiceDCを表示できることを確認します。
PageServiceDCは、次のいずれかのアクションを実行すると、アプリケーション・ナビゲータに表示されます。

- プロジェクトにページ - 新規作成タスク・フローを追加(第18.2.1.1項「ページ - 新規作成タスク・フローの追加方法」を参照)。

- 第7.1.3項「WebCenter Portalのデータ・コントロールの使用」の説明に従って、「ページ・データ・コントロール」を追加。

2. アプリケーション・ナビゲータの「データ・コントロール」パネルで、図18-20に示すように、「PageServiceDC」を開きます。

図18-20 ページ・サービス・データ・コントロール

「図18-20 ページ・サービス・データ・コントロール」の説明

3. 「getPageTree()」の下で、「PageTreeNode」をドラッグし、これをページにドロップします。

4. 「作成」メニューで「表」を選択し、「ADF読取り専用表」を選択します。

5. ダイアログで、scopeNameパラメータを入力し、指定したスコープの下にリストされたすべてのページを表示します。
値を入力しないと、データ・コントロールはデフォルトのスコープを取ります。図18-21では、スコープ値は、カスタム・マネージドBeanからフェッチされます。

図18-21 scopeNameパラメータ

「図18-21 scopeNameパラメータ」の説明

6. 新しい列を手順4で作成した表に追加します。

7. 実行時にページを削除する列を追加するには、deletePage(string)メソッドをドラッグし、これを新しい列にドロップします。

8. 「作成」メニューで「メソッド」を選択し、「ADFリンク」を選択します。

9. 「アクション・バインディングの編集」ダイアログの「パラメータ」セクション(図18-22を参照)で、pageNameパラメータに次の値を指定します。

#{bindings.PageTreeNode.treeModel.rowData.pagePath}

図18-22 「アクション・バインディングの編集」ダイアログ

「図18-22 「アクション・バインディングの編集」ダイアログ」の説明

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

11. 「データ・コントロール」パネルから、「PageServiceDC」、「getPageTree()」、「PageTreeNode」、「操作」の順に開きます。

12. 「実行」をドラッグし、ページにADFボタンとしてドロップします。

13. 「ソース」ビューで、ボタンのText属性をRefreshに設定します。
これでページのリストにリフレッシュ機能が付き、ユーザーは、ページの追加またはリストからのページの削除の後にリストをリフレッシュできます。

14. オプションで、ページ編集モードを起動するリンクとしてページを表示するには、ページ・ソースを表示し、次のように表のページ・パス列のoutputText要素をgoLinkに置き換えます。
置換前

<af:outputText value="#{row.pagePath}"/>

置換後

<af:goLink destination="/faces#{row.pagePath}" text="#{row.title}" targetFrame="_top"/>

15. ページを保存し、ブラウザで実行します。

16. 作成したデータ・コントロール表は図18-23のようになります。

図18-23 データ・コントロール表のサンプル

「図18-23 データ・コントロール表のサンプル」の説明

18.8.2.2 実行時にページを表示、編集および削除する方法

ページを表示するには、前の項の手順14から生成されたリンクに従います。アプリケーションが正しくセキュリティ保護されている場合は、実行時に編集リンクがページにレンダリングされます。ページを削除するには、関連するページの行のdeletePageボタンをクリックします。このボタンは、前の項の手順7から生成されています。表から削除済ページ行を削除するには、表の「リフレッシュ」ボタンをクリックします。

実行時にページを表示、編集および削除する方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページの作成、編集および削除に関する項の章を参照してください。

18.9 ページ・サービスのサンプル

カスタム・ポータル・デモのサンプルは、次を含む一部のページ・サービス機能について説明しています。

- ページ - 新規作成タスク・フローの追加方法

- タスク・フローのパラメータの構成方法

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

- カスタム・スタイルの使用方法

- ページの管理方法

カスタム・ポータル・デモのサンプルは、Oracle Technology Network (OTN)のOracle WebCenter Suite 11gのデモとサンプルのページ(http://www.oracle.com/technetwork/middleware/webcenter/overview/index.html)にポストされています。

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

Oracle WebCenter Portalのコンポーザは、実行時にアプリケーション設計を行う動作を制御するコンポーネントを提供します。この章では、アプリケーション・ページにコンポーザ・コンポーネントを追加し、これによってページの実行時編集を有効化する方法を説明します。

コンポーザの詳細は、第17章「コンポーザの概要」を参照してください。

この章には次の項が含まれます:

- 第19.1項「コンポーザ・コンポーネントを使用した編集可能ページの設計」

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

- 第19.3項「ページへのコンテンツの移入」

- 第19.4項「コンポーザの問題のトラブルシューティング」

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

コンポーザ・タグ・ライブラリには、Oracle JDeveloperでページに追加できる設計時コンポーネントが用意されており、実行時のページ編集が可能になります。設計時にコンポーザ・コンポーネントを使用してページを作成すると、実行時にコンポーザはページ編集モードに入り、要件に応じてページを変更するオプションを提供します。

Frameworkアプリケーションと非Frameworkアプリケーションでカスタマイズを有効にできます。アプリケーション内で、次のタイプのページのカスタマイズを有効にできます。

- ページ・テンプレートに基づいていない通常のJSPXページ

- JSPXテンプレート・ページ

- ページ・テンプレートに基づくJSPXページ

コンポーザ・コンポーネントおよびその属性の詳細は、第17.6項「コンポーザ・コンポーネント」を参照してください。

この項では、設計時にコンポーザ・コンポーネントをページに追加し、これを実行時に編集可能にする方法を説明します。次のサブセクションが含まれます:

- 第19.1.1項「カスタマイズ可能ページの作成方法」

- 第19.1.2項「Page Customizableを使用した実行時カスタマイズの有効化方法」

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

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

- 第19.1.5項「Layout Customizableを使用したページのレイアウトのカスタマイズの有効化方法」

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

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

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

- 第19.1.9項「コンポーザ・コンポーネントの追加時に行われる処理」

- 第19.1.10項「実行時の処理」

- 第19.1.11項「編集可能ページの設計時の必知事項」

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

Frameworkアプリケーションでカスタマイズ可能なJSPXページを作成する手順は、第5.3項「ポータルへのページの追加」を参照してください。

JDeveloperで新しいページを作成する場合は、図19-1に示すように、「Webコンテンツ」の下にあるに「アプリケーション・ナビゲータ」にリストされます。また、ページはエディタで開かれ、アクティブなエディタ・パネルになります。

図19-1 アプリケーション・ナビゲータに表示された新しいカスタマイズ可能ページ(MyPage.jspx)

「図19-1 アプリケーション・ナビゲータに表示された新しいカスタマイズ可能ページ(MyPage.jspx)」の説明

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

デフォルトでは、FrameworkアプリケーションはADFセキュリティで構成されます。デフォルトのユーザー名およびパスワード(weblogic/weblogic1)は自動的に作成されます。

保護されたアプリケーションでユーザーがページを編集できるようにするには、ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに付与する必要があります。権限の付与の詳細は、第68.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。

アプリケーションでADFセキュリティが有効になっていない場合、セキュリティを実装し、アプリケーションを構成してユーザーが個別のアイデンティティを持つようにユーザーを認証することによって、ユーザーの権限が実行時のカスタマイズ機能にどのように影響するかをテストできます。アプリケーションで基本的なセキュリティ・モデルを実装する手順は、第68.3項「ADFセキュリティ設定の構成」を参照してください。

19.1.2 Page Customizableを使用した実行時カスタマイズの有効化方法

Page Customizableコンポーネントをページに追加すると、ユーザーがページの編集モードに切り替えたときにコンポーザが起動します。Page Customizableコンポーネントを追加すると、一部の構成ファイルがデフォルトのコンポーザ固有の設定によって自動的に更新されます。詳細は、第19.1.9項「コンポーザ・コンポーネントの追加時に行われる処理」を参照してください。

注意:

ページにPage Customizableを追加する前の考慮事項については、第19.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項「コンポーザ・コンポーネントのプロパティ」の表B-1を参照することによって属性値を定義または変更できます。

6. ページを保存します。
デフォルトで、Panel Customizableコンポーネントが子コンポーネントとして追加され、図19-2に示すように、Page Editor PanelがPage Customizableコンポーネントのファセットとして追加されます。

図19-2 Page Customizableコンポーネント

「図19-2 Page Customizableコンポーネント」の説明

例19-1は、ページの「ソース」ビューでのpe:pageCustomizableタグを示しています。

例19-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>

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

ユーザーがページの編集モードに簡単に切り替えられるようにするには、ページにChange Mode LinkまたはChange Mode Buttonコンポーネントを追加する必要があります。

注意:

commandLinkまたはcommandButtonを使用して、そのactionListenerのModeContext.getCurrent().setEditMode()をコールすることにより、編集モードに切り替えることもできます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスlを参照してください。

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」を参照してください。

図19-3に示すように、「構造」ウィンドウのaf:formタグ内に、pe:changeModeLinkまたはpe:changeModeButtonタグが表示されます。

図19-3 Change Mode Link

「図19-3 Change Mode Link」の説明

図19-4に、JDeveloperのページの「設計」ビューのChange Mode Linkを示します。

図19-4 「設計」ビューのChange Mode Link

「図19-4 「設計」ビューのChange Mode Link」の説明

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

Panel Customizableコンポーネントは、ポートレットまたはリージョンの追加、配置、削除などのページ構成またはコンテンツ管理のタスクに必要です。デフォルトでは、1つのPanel CustomizableコンポーネントがPage Customizableコンポーネントの直接の子として自動的に追加されます。要件に応じて、このPanel Customizableコンポーネント内にさらにPanel Customizableコンポーネントを追加できます。

実行時にコンポーネントをドラッグ・アンド・ドロップできるのはPanel Customizableコンポーネント内のみです。

注意:

ページにPage Customizableを追加する前の考慮事項については、第19.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コンポーネントの使用可能なスペースを埋めます。その他の子コンポーネントは、ページから削除されていなくても無視されます。

19.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属性を使用してコンポーネントに説明ラベルを提供します。

図19-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コンポーネントに子コンポーネントが含まれている場合のみレンダリングされます。

図19-5 Layout Customizableコンポーネント

「図19-5 Layout Customizableコンポーネント」の説明

19.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を参照して、オプションで、その他の属性を設定できます。

図19-6に示すように、cust:showDetailFrameタグがcust:panelCustomizableタグ内に追加されます。

図19-6 Show Detail Frameコンポーネント

「図19-6 Show Detail Frameコンポーネント」の説明

このタイプのタスクをさらに理解するには、第19.2項「コンポーザ・コンポーネントを使用した編集可能ページの設計: 例」を参照してください。

19.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でファセットを宣言する際に使用した同じ名前を指定します。テンプレートは、図19-7に示すようにファセットを表示します。

図19-7 新しいページ・テンプレート・ファイル

「図19-7 新しいページ・テンプレート・ファイル」の説明

10. テンプレート・ファイルを保存します。

このテンプレートに基づいてカスタマイズ可能ページを作成できるようになりました。ページを作成したら、Panel CustomizableまたはLayout Customizableコンポーネントを新しいページに表示されるファセット内に追加できます。ページ・コンテンツをPanel CustomizableまたはLayout Customizableコンポーネントに追加できます。

19.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などの代替のコンポーネントを使用します。

- 最良の結果を得るためには、ソース・コードの編集によってではなく、「構造」ウィンドウを使用してコンポーネントを移動します。

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

ページにPage Customizableコンポーネントを追加する際には、次の構成が自動的に実行されます。

- デフォルトのリソース・カタログの定義ファイルdefault-catalog.xmlがアプリケーションで構成されます。default-catalog.xmlファイルは、Application_Root/Portal/src/portalディレクトリにあります。アプリケーションのエンド・ユーザーが使用できるデフォルトのリソース・カタログにコンポーネントを追加するには、第15章「リソース・カタログの作成および管理」を参照してください。
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ファイル内に構成されます。詳細は、第21.11項「永続性変更マネージャの構成」を参照してください。

- アプリケーションを作成すると、最小限のadf-config.xmlファイルも作成されます。Page Customizableをアプリケーション・ページに追加すると、必要な構成がadf-config.xmlファイルに追加されます。たとえば、変更の永続性は、このファイルのadf-faces-configセクションで構成されます。詳細は、第21.11項「永続性変更マネージャの構成」を参照してください。

- Application_Root/Portal/adfmsrc/portalディレクトリのDataBindings.cpxファイルは更新され、ページにタスク・フローが存在できるようになります。

- ページ定義ファイルは、WebCenter Portal拡張JARファイルの一部として入手可能なコンポーザ・タスク・フローに対するバインディングで更新されます。例19-2は、Page Customizableコンポーネントがアプリケーション・ページに追加された後のページ定義ファイルのコードを示しています。

図19-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項「コンポーザ固有のファイルと構成」を参照してください。

19.1.10 実行時の処理

実行時、ユーザーは、第17.3項「ページ表示モードでのカスタマイズ機能」および第17.4項「ページ編集モードの「デザイン」ビューでの編集機能」で説明されているすべてのタスクを実行できます。

各コンポーザ・コンポーネントには、第17.6項「コンポーザ・コンポーネント」で説明されている実行時機能が用意されています。

注意:

ページで実行する実行時カスタマイズは、アプリケーションをターゲット・サーバーにデプロイするときに引き継がれません。

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

カスタマイズ可能ページにコンポーザ・コンポーネントを追加する際には、次の事項に注意する必要があります。

- 保護されたアプリケーションでユーザーがページを編集できるようにするには、ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに明示的に付与する必要があります。権限の付与の詳細は、第68.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コンポーネントと類似のヘッダーおよび表示オプションに備えられます。

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

この例では、実行時にカスタマイズ可能なページを作成するとします。ページ名はMyPage.jspxで、MyWebCenterAppというFrameworkアプリケーションにあります。

カスタマイズ可能ページを作成するには:

1. 第5.1項「アプリケーション・テンプレートとは」の手順を実行して、MyWebCenterAppというFrameworkアプリケーションを作成します。

2. 第5.3項「ポータルへのページの追加」の手順を実行して、MyPage.jspxというJSPXページを作成します。

3. Panel Stretch LayoutをMyPage.jspxに追加します。

注意:

Panel Stretch Layoutコンポーネントは、centerファセットの子をストレッチし、ブラウザの使用可能なスペースすべてを埋めます。これは、ブラウザ上でも同様です。したがって、コンポーネントをこの子コンポーネント内に配置することによって、確実にページのカスタマイズ可能部分がブラウザ領域全体を占めるようにできます。

4. 第19.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. 第19.1.3項「Change Mode LinkまたはChange Mode Buttonを使用したページ・モードの切替えを有効にする方法」の手順を実行して、Change Mode LinkをPanel Stretch Layoutの上部ファセットに追加します。

8. Page Customizableの直接の子であるPanel Customizable内部で、第19.1.5項「Layout Customizableを使用したページのレイアウトのカスタマイズの有効化方法」の手順を実行して、Layout Customizableコンポーネントを追加します。

9. 第19.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」の手順を実行して、Show Detail Frameコンポーネントをページの各Panel Customizable内に追加します

10. この例のため、Rich Text EditorおよびImageコンポーネントをLayout Customizableでネストされた2つのShow Detail Frameコンポーネント内に追加します。
これらのコンポーネントそれぞれをADF Facesタグ・ライブラリからページの必要な場所にドラッグ・アンド・ドロップします。

ページのコンポーネントの階層を図19-8に示します。

図19-8 MyPage.JSPXのコンポーネント階層

「図19-8 MyPage.JSPXのコンポーネント階層」の説明

11. ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに付与します。権限の付与の詳細は、第68.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。

12. MyPage.jspxを実行します。
ページが表示モードで開きます。ページの「編集」リンクをクリックして編集モードに入ります。ページがコンポーザで開きます。コンポーザでは、第17.4項「ページ編集モードの「デザイン」ビューでの編集機能」で説明されているすべての編集タスクを実行できます。

図19-9に実行時の編集モードでのページの外観を示します。

図19-9 コンポーザで開いたMyPage

「図19-9 コンポーザで開いたMyPage」の説明

アプリケーションがADFセキュリティで構成されていない場合、このガイドのその他の例でサンプル・ページを使用するには、アプリケーションでADFセキュリティを構成します。

アプリケーションでセキュリティを構成するには:

1. フォーム・ベースの認証でADFセキュリティを構成し、デフォルトのログイン・ページを生成します。
詳細は、第68.3項「ADFセキュリティの構成」を参照してください。

2. 3人のユーザーahunold、skingおよびjdoeを作成します。
詳細手順は、第68.2項「アプリケーション・ロールの作成」を参照してください。

MyPage.jspxを実行すると、ログイン画面が表示されます。作成した3つのユーザー名のいずれかを使用してログインできます。

19.3 ページへのコンテンツの移入

必要なコンポーザ・コンポーネントを備えた編集可能ページを作成した後、通常のJSPXページと同様にページにコンテンツを移入できます。ただし、コンポーザ対応のページにコンテンツを追加するときに理解しておく必要がある、制限および推奨事項があります。

設計時の編集可能ページの移入は、その他のADF Facesページの移入と似ています。コンポーネントをIDEの様々な領域からページにドラッグ・アンド・ドロップできます。ポートレット、タスク・フロー、ADF Facesコンポーネントなどのコンポーネントを追加できます。

Page Customizableコンポーネント内の任意の場所にコンポーネントをドラッグ・アンド・ドロップすると、Id属性が一意の値に設定されます。Id属性は、コンポーネントの編集および変更された状態の維持に必要です。実行時にコンポーネントをページに追加すると、Id属性が自動的に設定されます。

19.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属性値を設定していることを確認してください。この属性値が設定されていない場合、実行時にページでコンポーネントを移動または再配置しようとするとエラーが発生する場合があります。

- 編集可能ページでポートレットを消費するには、まずアプリケーションにポートレット・プロデューサを登録する必要があります。詳細は、第62章「ポートレットの消費」を参照してください。

19.3.1.1 タスク・フローの追加に関する考慮事項

ユーザーは、カスタマイズ可能ページに追加されたタスク・フローをパーソナライズ、カスタマイズおよび編集できます。保護されたアプリケーションでは、タスク・フローのカスタマイズ権限を持つユーザーは、タスク・フローのページのコンポーネントも編集できます。

タスク・フローをカスタマイズ可能ページに追加するときには、次の点を考慮してください。

- ルック・アンド・フィール、レイアウト設計および対話に関する一貫性をユーザーに提供し、問題(過剰な余白、過剰なスクロール・バー、大きいデータ・セットを表示するときの遅い応答、不安定な応答、予期できない応答など)を回避するために、付録D「コンポーザ対応のページで使用するタスク・フローの作成のガイドライン」のガイドラインに従ってタスク・フローが作成されていることを確認します。

- 保護されたアプリケーションで、ユーザーがコンポーザでタスク・フローのコンテンツを表示できるようにするには、タスク・フローがアプリケーションのjazn-data.xmlファイルにTaskFlowPermission権限を持ち、少なくともViewアクションがプロビジョニングされていることを確認します。これはデフォルトでは有効になっていないため、明示的に設定する必要があります。

- 保護されたアプリケーションで、ユーザーがタスク・フローのページでコンポーネントを編集できるようにするには、タスク・フローがアプリケーションのjazn-data.xmlファイルにTaskFlowPermission権限を持ち、Customizeアクションがプロビジョニングされていることを確認します。これはデフォルトでは有効になっていないため、明示的に設定する必要があります。

- タスク・フローですべての必須パラメータに有効な値を指定したことを確認します。

詳細は、第0.1項「タスク・フローのセキュリティの実装」を参照してください。

19.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());
}

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

この章では、コンポーザの宣言的でプログラム可能な拡張性メカニズムを使用して、ビジネス・ニーズに合うように実行時機能をカスタマイズする方法について説明します。次の項が含まれます:

- 第20.1項「拡張性オプションの概要」

- 第20.2項「コンポーザのアドオンの作成」

- 第20.3項「カスタム・プロパティ・パネルの作成」

- 第20.4項「式ビルダーの拡張」

- 第20.5項「タスク・フローのパラメータのカスタムLOVまたはピッカーの構成」

- 第20.6項「コンポーザUIイベントのイベント・ハンドラの構成」

- 第20.7項「リソース・カタログのドロップ・ハンドラの構成」

- 第20.8項「プロパティ・フィルタの定義」

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

- 第20.10項「コンポーザのツールバーのカスタマイズ」

- 第20.11項「「デザイン」ビューでの直接選択の有効化」

- 第20.12項「コンポーザの拡張性機能の問題のトラブルシューティング」

20.1 拡張性オプションの概要

コンポーザは、カスタマイズ可能なアプリケーション・ページを構築するフレームワークを提供します。デフォルトの機能に加えて、コンポーザのフレームワークを拡張し、エンド・ユーザーが使用できる実行時機能を拡張できます。アプリケーションのadf-config.xmlファイルおよびコンポーザの拡張ファイルpe_ext.xmlで拡張機能を構成する必要があります。これらのファイルの詳細は、第20.1.8項「構成ファイル」を参照してください。

この項では、コンポーザの実行時機能を宣言的に拡張するために使用できるオプションについて説明します。次のサブセクションが含まれます:

- 第20.1.1項「コンポーザのアドオン」

- 第20.1.2項「コンポーザのカスタム・プロパティ・パネル」

- 第20.1.3項「コンポーザのイベント・ハンドラ」

- 第20.1.4項「ドロップ・ハンドラ」

- 第20.1.5項「コンポーネントのプロパティ・フィルタ」

- 第20.1.6項「カスタマイズ・マネージャ」

- 第20.1.7項「コンポーザのツールバーのカスタマイズ」

20.1.1 コンポーザのアドオン

コンポーザのツールバーのデフォルト・ビュー(図20-1)には次のボタンが含まれます。

- 表示: ユーザーが「設計」ビューと「ソース」ビューを切り替えることができます。

- ページ・プロパティ: 「ページ・プロパティ」ダイアログを開き、ユーザーがホスト・ページのメタデータを編集できるようにします。

- ページのリセット: 現在の編集セッションでページに行った変更を元に戻します。

- 閉じる: 「デザイン」ビューを終了し、標準UIにユーザーを戻します。

図20-1 コンポーザのツールバーのデフォルト・アドオン

「図20-1 コンポーザのツールバーのデフォルト・アドオン」の説明

「ページ・プロパティ」および「ページのリセット」ボタンはアドオンの例です。これらのボタンをクリックして、ページ・プロパティの編集およびページ・カスタマイズのリセットを行うためのパネルを表示します。通常、アドオンは、ページ編集モードのコンポーザのツールバーのボタンとしてレンダリングされるカスタム・タスク・フローです。「ページ・プロパティ」アドオンと「ページのリセット」アドオンとともに表示されるアドオンを作成できます。たとえば、コンポーザのツールバーに「リビジョン」ボタンが表示されるように、ページ・リビジョン履歴を表示するアドオンを作成できます。このボタンをクリックするとページの「リビジョン履歴」が表示されます。「ページ・プロパティ」アドオンと「ページのリセット」アドオンを、作成するカスタム・アドオンと置き換えることもできます。

カスタムのアドオンを構成するプロセスには、タスク・フローの作成、これらのJARファイルへのパッケージ化およびこれらのコンポーザ拡張ファイルでの定義が含まれます。詳細は、第20.2項「コンポーザのアドオンの作成」を参照してください。

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

「コンポーネント・プロパティ」ダイアログには、様々なタブに属性のカテゴリが表示されます。各タブは、プロパティ・パネルと呼ばれます。コンポーザのデフォルトの「コンポーネント・プロパティ」ダイアログは、Oracle JDeveloperのプロパティ・インスペクタに似ています。コンポーネントのカスタム・プロパティ・パネルを作成して登録し、これらにコンポーネント・プロパティを移入し、「コンポーネント・プロパティ」ダイアログのデフォルトのタブとともにこれらをタブとして表示できます。

カスタム・プロパティ・パネルを構成するプロセスには、タスク・フローとしてのこれらの作成、これらのJARファイルへのパッケージ化およびこれらのコンポーザ拡張ファイルでの定義が含まれます。詳細は、第20.3項「カスタム・プロパティ・パネルの作成」を参照してください。

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

コンポーザには、実行時にページを編集するための直感的なユーザー・インタフェースが用意されています。これには、「保存」ボタン、「閉じる」ボタン、「削除」ボタンなどのUIコンポーネントが含まれます。ユーザーがコンポーザでボタンやアイコンをクリックすると、イベント・ハンドラで確実に特定のアクションが実行されます。イベント・ハンドラは、コンポーザのイベントが起動されると、コンポーザによってコールされて戻されるコードです。コンポーザの各UIイベントはイベント・ハンドラと関連付けられています。イベントの起動時に異なる処理または複数の処理を実行して、コンポーザの本来の機能を拡張する必要がある場合があります。たとえば、ユーザーが「保存」をクリックしたとき、デフォルトでコンポーネントに用意されている保存動作に加えて、キャッシュした情報のクリーニングやリソースへの接続などの追加のタスクを実行するようにアプリケーションを構成する必要がある場合があります。イベント・ハンドラを使用してこれを実現できます。詳細は、第20.6項「コンポーザUIイベントのイベント・ハンドラの構成」を参照してください。

20.1.4 ドロップ・ハンドラ

リソース・カタログは、ユーザーがページに追加できるリソースを提供します。リソース名の隣の「追加」リンクで、ユーザーはリソースをページに追加できます。コンポーザは、ドロップ・ハンドラを提供し、カタログで追加操作を処理します。デフォルトでは、ドロップ・ハンドラはカタログの各リソースに対して構成されています。リソースへのドロップ処理の完全な制御を提供する場合、そのリソースに追加のドロップ・ハンドラを作成できます。そうすると、「追加」リンクは、リソースをページに追加するための様々なオプションを備えたコンテキスト・メニューを表示します。1つ以上のドロップ・ハンドラを作成し、カタログでリソースの様々なフレーバを処理できます。

次のタイプのドロップ・ハンドラを追加できます。

- コンポーザを使用して登録され、ユーザーがリソース・カタログで「追加」リンクをクリックするとコールされるJavaクラス。この場合、リソースは選択したデータ・フレーバに基づくページに追加されます。

- コンポーザを使用して登録され、ユーザーがリソース・カタログで「追加」リンクをクリックするとコールされるタスク・フロー。この場合、リソースのどの情報をページに表示する必要があるかをユーザーが決定できるタスク・フローが起動されます。

詳細は、第20.7項「リソース・カタログのドロップ・ハンドラの構成」を参照してください。

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

「コンポーネント・プロパティ」ダイアログは、選択したコンポーネントのプロパティを表示します。デフォルトでは、コンポーザは特定のコンポーネント・プロパティをフィルタ処理し、プロパティのサブセットをユーザーに表示します。フィルタを宣言的に定義して、ユーザーに表示する必要がないプロパティをさらに非表示にしたり、非表示のプロパティを表示したりできます。詳細は、第20.8項「プロパティ・フィルタの定義」を参照してください。

20.1.6 カスタマイズ・マネージャ

カスタマイズ・マネージャは、ページやタスク・フローなどのオブジェクトに関するアプリケーションのカスタマイズをユーザーがダウンロード、アップロード、リセットおよび削除できるタスク・フローです。コンポーザ内またはコンポーザ外のある管理ページ上でカスタマイズ・マネージャを構成できます。カスタマイズ・マネージャの構成および使用の詳細は、第20.9項「カスタマイズ・マネージャ・タスク・フローのパラメータ・サポートの有効化」を参照してください。

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

デフォルトのコンポーザのツールバーは、要素を2行に表示します。図20-2に示すように、最初の行にはページ名とステータス・インジケータが表示され、2番目の行には「表示」メニュー、「ページ・プロパティ」ボタン、「ページのリセット」ボタンおよび「閉じる」ボタンが表示されます。

図20-2 デフォルトの要素を含むコンポーザのツールバー

「図20-2 デフォルトの要素を含むコンポーザのツールバー」の説明

要素を追加、削除または再配置してツールバーをカスタマイズできます。既存の要素をカスタム要素で上書きすることも可能です。たとえば、編集しているページの名前をユーザーに表示しない場合、ページ名を表示するメッセージを削除できます。

コンポーザのツールバーのカスタマイズの詳細は、第20.10項「コンポーザのツールバーのカスタマイズ」を参照してください。

20.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」を参照してください。

20.2 コンポーザのアドオンの作成

コンポーザには、実行時編集のために次のデフォルトのアドオンが用意されています。

- ページ・プロパティ
このダイアログは、ユーザーがコンポーザのツールバーの「ページ・プロパティ」ボタンをクリックすると開きます。「ページ・プロパティ」ダイアログは、現在のページのプロパティを表示し、ユーザーはプロパティ値を変更できます。

- ページのリセット
「ページのリセット」ダイアログは、ユーザーがコンポーザのツールバーの「ページのリセット」ボタンをクリックすると開きます。「ページのリセット」ダイアログでは、ユーザーはページに対して作成されたアプリケーションのカスタマイズを削除し、これを以前に保存したバージョンまたは元のデフォルトの状態にリセットできます。詳細は、第17.4.11項「ページのリセット」を参照してください。

これらに加えて、コンポーザで新規アドオンを登録できます。たとえば、コンポーザのツールバーに「リビジョン」ボタンが表示されるように、ページ・リビジョン履歴を表示するアドオンを作成できます。このボタンをクリックするとページの「リビジョン履歴」が表示されます。

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

- 第20.2.1項「アドオンの作成および登録の方法」

- 第20.2.2項「実行時の処理」

- 第20.2.3項「コンポーザのデフォルトのアドオンの除外方法」

- 第20.2.4項「カスタマイズ・マネージャのアドオンの表示方法」

- 第20.2.5項「アドオンを選択的に表示する方法」

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

コンポーザのツールバーにあるボタンから起動できるカスタム・タスク・フローを作成および登録できます。登録されたすべてのアドオンに、ツールバーに表示される関連ボタンがあります。

この項では、アドオンを作成し、これをコンポーザを使用して登録する手順を順を追って説明します。ここには、アプリケーションに関する情報を表示するアドオンの作成方法を示す例が含まれています。例のアドオンは、ユーザーがクリックしてアプリケーションの情報を含むタスク・フローを起動できるコンポーザのツールバーの「情報」ボタン(図20-3)をレンダリングします。

図20-3 コンポーザのツールバーの「情報」ボタン

「図20-3 コンポーザのツールバーの「情報」ボタン」の説明

この項には次のサブセクションが含まれます:

- 第20.2.1.1項「アドオン・タスク・フローの作成」

- 第20.2.1.2項「コンポーザを使用したアドオンの登録」

- 第20.2.1.3項「アドオンのadf-config.xmlへの登録」

20.2.1.1 アドオン・タスク・フローの作成

コンポーザのアドオンは、JSPXページまたはページ・フラグメントを使用して作成するタスク・フローです。

アドオンを作成するには:

1. アプリケーション・プロジェクトで、custompanelview.jsffというJSFFファイルを作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」を選択してから「JSFページ」またはJSFフラグメントを選択します。

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

2. 例20-1で表示される内容に類似したコードを追加することによって、フラグメントをデザインします。

例20-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. アプリケーション・ナビゲータで、プロジェクト・フォルダを右クリックし、「デプロイ」、「デプロイメント・プロファイル名」、「宛先」、「ADFライブラリJARファイルへ」の順に選択します。こうすることによって、JARファイルを含むdeployフォルダが<Application_Root>\Portal\deploy\にあるプロジェクト・フォルダに作成されます。

アドオンを使用する任意のアプリケーションにこのJARファイルを追加できます。

20.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>要素には、パネルを必要な数だけ宣言できます。

例20-2に、<panel>エントリを含む拡張ファイルのコードを示します。

例20-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>

詳細は、第20.6項「コンポーザUIイベントのイベント・ハンドラの構成」を参照してください。

5. pe_ext.xmlファイルを保存します。

20.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>内で、例20-3に示すように新しいパネルの<pe:addon-panel>エントリを追加します。

name属性には、コンポーザ拡張ファイルでパネルの登録に使用した名前が含まれている必要があります。

例20-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>エントリをまったく指定しない場合、デフォルトのオプションのみがコンポーザに表示されます。

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

20.2.2 実行時の処理

コンポーザを使用して登録するカスタム・アドインは、デフォルトのアドインとともにコンポーザのツールバーにレンダリングされます。

この例では、コンポーザのツールバーに「情報」ボタンがレンダリングされます(図20-4)。

図20-4 コンポーネントのツールバーの「情報」ボタン

「図20-4 コンポーネントのツールバーの「情報」ボタン」の説明

このボタンをクリックすると、アプリケーションの情報タスク・フローが表示されます(図20-5)。

注意:

アドオン・パネルは、タスク・フロー内のコンテンツに合せて自動的にサイズ設定されます。

図20-5 アプリケーションの情報タスク・フロー

「図20-5 アプリケーションの情報タスク・フロー」の説明

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

「ページ・プロパティ」、「ページのリセット」および「カスタマイズ・マネージャ」の各ボタンをコンポーザのツールバーに表示または非表示にすることを選択できます。これらのアドオンのいずれかを非表示にするには、<pe:addon-panels>のshow-default-addons属性をtrueに設定し、非表示にするデフォルトのアドオンのエントリを追加し、そのアドオンのrendered属性をfalseに設定する必要があります。

例20-4に、「ページ・プロパティ」アドオンを非表示にするコードを示します。

例20-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>

除外されたアドオン(「ページのリセット」)はコンポーザのツールバーに表示されません。他のデフォルトのアドオンはデフォルトの順序でツールバーに表示されます。

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

カスタマイズ・マネージャは、タスク・フロー、ページおよび指定したページのページ・フラグメントのアプリケーションのカスタマイズをユーザーが管理できるコンポーザのアドオンです。詳細は、第17.4.14項「アプリケーションのカスタマイズの管理」を参照してください。

カスタマイズ・マネージャのアドオンは、コンポーザのライブラリで使用できますが、デフォルトではレンダリングされません。これを有効にするには、次の例に示すように、<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>

この構成を行うと、コンポーザのツールバーは、図20-6に示すように「カスタマイズ・マネージャ」ボタンを表示します。

図20-6「カスタマイズ・マネージャ」ボタン

「図20-6「カスタマイズ・マネージャ」ボタン」の説明

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

ビジネス要件に応じて、コンポーザで様々なユーザーが使用できるアドオンを選択的に非表示にする必要がある場合があります。アドオンを選択的に非表示にするには、例20-5に示すように、<pe:addon-panels>のshow-default-addons属性をtrueに設定し、非表示にするデフォルトのアドオンのエントリを追加し、EL式を使用してそのアドオンのrendered属性をfalseにする必要があります。

例20-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属性を指定しないと、そのアドオンは常に表示されます。

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

ユーザーがコンポーネントの「編集」アイコンをクリックすると、コンポーザは、「コンポーネント・プロパティ」ダイアログにコンポーネントのプロパティを表示します。「コンポーネント・プロパティ」ダイアログには、一連のタブが用意されています。各タブは、関係する属性のグループを表示します。属性には、コンポーネントの動作および視覚的スタイルのプロパティを制御する関連値があります。たとえば、「スタイル」タブは、幅、高さ、背景色などのコンポーネントのスタイル関係のプロパティを表示します。

同様に、ユーザーが「ページ・プロパティ」ボタンをクリックすると、「ページ・プロパティ」ダイアログが独自の一連のタブとともに開きます。これらのタブには、表示関連のページ・プロパティ、ページ・パラメータおよびセキュリティ設定が含まれています。

「コンポーネント・プロパティ」ダイアログまたは「ページ・プロパティ」ダイアログに表示されるタブとともにレンダリングするカスタム・プロパティ・パネルを作成して登録できます。また、デフォルトのパネルの削除やカスタム・プロパティ・パネルへの置換も行えます。たとえば、Sourceプロパティのピッカーを表示することによってImageコンポーネントのよりフレンドリなプロパティ・パネルを開発できます。こうすることによって、ユーザーは使用可能なオプションからイメージを容易に選択できるようになります。

この項では、カスタム・プロパティ・パネルの作成方法を説明します。デフォルトのプロパティ・パネルを除外、上書きおよび選択的にレンダリングする方法も説明します。次のサブセクションが含まれます:

- 第20.3.1項「カスタム・プロパティ・パネルの作成および登録の方法」

- 第20.3.2項「実行時の処理」

- 第20.3.3項「デフォルトのプロパティ・パネルの上書き方法」

- 第20.3.4項「デフォルトのプロパティ・パネルの除外方法」

- 第20.3.5項「プロパティ・パネルの選択的レンダリング方法」

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

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

カスタム・プロパティ・パネルの作成は、アドオンの作成と似ています。つまり、カスタム・プロパティ・パネルをタスク・フローとして作成し、これをコンポーザ拡張ファイルに登録します。ただし、コンポーザのアドオンはadf-config.xmlファイルのaddon-panels要素を使用して構成されるのに対して、カスタム・プロパティ・パネルは拡張ファイル自体のproperty-panels要素を使用して構成されます。

カスタム・プロパティ・パネルを構成して、常に「コンポーネント・プロパティ」ダイアログに表示できます。または、パネルを構成して、特定のコンポーネントまたはタスク・フローが編集のために選択されたときのみ表示することも可能です。

この項では、カスタム・プロパティ・パネルを作成および登録する方法を説明します。次のサブセクションが含まれます:

- 第20.3.1.1項「カスタム・プロパティ・パネルの作成」

- 第20.3.1.2項「コンポーネントに対するカスタム・プロパティ・パネルの登録」

- 第20.3.1.3項「タスク・フローに対するカスタム・プロパティ・パネルの登録」

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

プロパティ・パネルには、ページまたはコンポーネントのプロパティを編集する方法が用意されています。たとえば、ユーザーは、選択したタスク・フローで「編集」アイコンをクリックし、そのパラメータ値を変更し、「コンポーネント・プロパティ」ダイアログでその視覚的属性を変更できます。

コンポーザでは、プロパティ・パネルをコンポーネントおよびタスク・フローと関連付けることができます。ユーザーがコンポーネントまたはタスク・フローの「編集」アイコンをクリックすると、コンポーザは「コンポーネント・プロパティ」ダイアログを開き、オブジェクトと関連付けたカスタム・プロパティ・パネルをデフォルトのプロパティ・パネルとともに表示します。

カスタム・プロパティ・パネルを作成し、これをコンポーザ拡張ファイルで宣言する手順は、コンポーザのアドオンを作成して宣言する手順と似ています。詳細は、第20.2.1.1項「アドオン・タスク・フローの作成」および第20.2.1.2項「コンポーザを使用したアドオンの登録」を参照してください。

例20-6に、pe_ext.xmlファイルでのサンプルのプロパティ・パネル宣言を示します。

例20-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ファイルで宣言した後、例20-7に示すように、<property-panels>要素を使用してこれを構成する必要があります。こうすることによって、パネルは、コンポーザ・コンポーネント・プロパティおよび「ページ・プロパティ」ダイアログで自動的に表示されます。

例20-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>要素を追加できます。

20.3.1.2 コンポーネントに対するカスタム・プロパティ・パネルの登録

拡張ファイルにカスタム・パネルを登録するとき、パネルをコンポーネントまたはタスク・フローと関連付けることができます。カスタム・プロパティ・パネルはそのコンポーネントまたはタスク・フローに対してのみレンダリングされます。この項では、特定のコンポーネントに対してプロパティ・パネルを登録する方法を説明します。

コンポーネントに対してプロパティ・パネルを登録するには:

1. コンポーザ拡張ファイル(pe_ext.xml)を作成します(これがまだ存在していない場合)。
拡張ファイルの作成の詳細は、第20.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>セクションのパネルを宣言する際に使用した名前を指定します。
例20-8に、コンポーネントの完全修飾クラス名を指定することでCommand Buttonコンポーネントに関連付けられたカスタム・プロパティ・パネルを示します。Oracle ADFコンポーネントとその実行時クラスの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

例20-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」を参照してください。

「子コンポーネント」、「スタイル」、「パラメータ」などのすべてのデフォルトのパネルは、定義したカスタム・パネルとともに表示されます。

20.3.1.3 タスク・フローに対するカスタム・プロパティ・パネルの登録

コンポーザ拡張ファイルに登録することで、タスク・フローのカスタム・プロパティ・パネルを定義できます。例20-9に、タスク・フローへのカスタム・プロパティ・パネルの登録に使用されるサンプル・コードを示します。

特定のタスク・フローに対して登録されたカスタム・プロパティ・パネルは、これが関連付けられたタスク・フローが選択された場合のみ表示されます。それ以外の場合には、デフォルトのプロパティ・パネルが表示されます。

注意:

タスク・フロー固有のカスタム・プロパティ・パネルは、タスク・フロー・パラメータまたはタスク・フローの動作と関係のあるその他の側面をカスタマイズする際にのみ使用します。

カスタム・プロパティ・パネルは、Oracle JSF Portlet Bridgeを使用してレンダリングされたタスク・フローに関連付けられている場合には動作しません。

タスク・フローに対してプロパティ・パネルを登録するには:

1. pe_ext.xmlファイルの<addon-config>要素内に<property-panels>要素を追加します。
拡張ファイルの作成の詳細は、第20.2.1.2項「コンポーザを使用したアドオンの登録」を参照してください。

2. この中にproperty-panel宣言を追加します。
property-panelエントリは複数指定できます。

3. taskflow-id要素およびpanel要素をproperty-panel要素内に追加します。
taskflow-id要素を追加してタスク・フロー名を指定します。panel要素を追加して、ファイルのaddon-configセクションでプロパティ・パネルを宣言する際に使用した名前を指定します。

例20-9に、dashboardタスク・フローと関連付けられたカスタム・プロパティ・パネルを示します。

例20-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と関連付けられます。詳細は、第20.3.6項「カスタム・プロパティ・パネルでのプロパティおよびパラメータの表示方法」を参照してください。

20.3.2 実行時の処理

カスタム・プロパティ・パネルを特定のコンポーネントまたはタスク・フローと関連付けた場合、実行時このパネルは、指定したコンポーネントまたはタスク・フローから起動した「コンポーネント・プロパティ」ダイアログでタブとしてレンダリングされます。カスタム・プロパティ・パネルを特定のコンポーネントまたはタスク・フローと関連付けなかった場合、実行時このカスタム・プロパティ・パネルは、すべてのページ、コンポーネントおよびタスク・フローに対して「ページ・プロパティ」ダイアログと「コンポーネント・プロパティ」ダイアログの両方でタブとしてレンダリングされます。

注意:

「コンポーネント・プロパティ」ダイアログおよび「ページ・プロパティ」ダイアログで、カスタム・パネルは、タスク・フローを含むタブ・コンポーネントによってサイズ設定されます。タブ・コンポーネント自体のサイズは、現在適用されているスキンのルールによって決まります。このルールはaf|panelTabbed.Tabをコールされます。

20.3.3 デフォルトのプロパティ・パネルの上書き方法

コンポーザの「コンポーネント・プロパティ」ダイアログは、デフォルトで次のパネルを表示します: 「表示オプション」、「子コンポーネント」、「イベント」、「スタイル」、「コンテンツ・スタイル」および「パラメータ」。pe_ext.xmlファイルでカスタム・パネルを宣言および登録するときにデフォルトのパネルの名前を使用して特定のパネルを上書きできます。デフォルトのパネルの詳細は、第B.3項「コンポーザのデフォルト・アドオンとプロパティ・パネル」を参照してください。

例20-10に、「表示オプション」パネルをcustom-panel-task-flowというタスク・フローを使用して定義したパネルで上書きするコードを示します。

例20-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>

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

即時利用可能な、すべてのデフォルトのプロパティ・パネルは、構成したカスタム・プロパティ・パネルとともに表示されます。「ページ・プロパティ」ダイアログまたは「コンポーネント・プロパティ」ダイアログでデフォルトのプロパティ・パネルを非表示にするために、そのパネル専用の行を追加し、rendered属性をfalseに設定できます。

例20-11に、Command Buttonコンポーネントの「コンテンツ・スタイル」プロパティ・タブがfalseに設定されたrendered属性を示します。デフォルトのプロパティ・パネルの詳細は、第B.3項「コンポーザのデフォルト・アドオンとプロパティ・パネル」を参照してください。

例20-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>

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

アプリケーションに登録されたカスタム・プロパティ・パネルは、指定したコンポーネントの「編集」アイコンをユーザーがクリックすると、「コンポーネント・プロパティ」ダイアログにレンダリングされます。アプリケーションを構成して、ログイン・ユーザーのロール、表示中のページなどの異なる条件に基づいてプロパティ・パネルを選択的にレンダリングできます。プロパティ・パネルを選択的に表示するために、次の例に示すように、property-panelのrendered属性のEL値を使用できます。

<property-panel name="global-but-just" rendered="#{bean.showProperty}">

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

コンポーネントのカスタム・プロパティ・パネルを構築する場合、コンポーザ・タグ・ライブラリから使用可能なShow Propertyコンポーネントを使用して、カスタム・パネルにコンポーネントの属性を表示できます。カスタム・パネル・タスク・フローを定義するページ・フラグメントで、表示する各属性に対して1つのShow Propertyコンポーネントを追加する必要があります。Show Propertyは、(カスタム・パネルを作成した)コンポーネントまたはタスク・フローのプロパティ値を読み取る宣言型コンポーネントで、カスタム・パネルにそのプロパティの入力フィールドを表示します。ユーザーは、入力フィールドを使用してパネルのプロパティ値を編集できます。

カスタム・パネルの詳細は、第20.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コンポーネントが追加されます。実行時にユーザーが天気ウィジェットを編集すると、「コンポーネント・プロパティ」ダイアログは、図20-7に示すように3つの属性を含むカスタム・パネルを表示します。

図20-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);
}
}

20.4 式ビルダーの拡張

「コンポーネント・プロパティ」ダイアログの「パラメータ」タブおよび「表示オプション」タブのすべてのプロパティは、式言語(EL)式を取ることができます。このようなパラメータで使用できる「式ビルダー」オプションは、図20-8に示すように単純に式ビルダーである「編集」ダイアログを開きます。式ビルダーは、取得可能だが取得できない場合には未知である値が必要な場合(たとえば、値を現在のユーザーまたは現在のアプリケーション・スキンの名前にする場合)に特に便利です。

図20-8 式言語エディタ

「図20-8 式言語エディタ」の説明

式ビルダーをカスタマイズして、コンポーザ拡張ファイルpe_ext.xmlに必要なエントリを作成することによってオプションを増やすことができます。ELを無効化するか、または既存のELを上書きから保護するためにコンポーザを構成することもできます。

この項では、式ビルダーを拡張してカスタム機能を追加する方法を説明します。次のサブセクションが含まれます:

- 第20.4.1項「式ビルダーの拡張方法」

- 第20.4.2項「式言語を保護する方法」

- 第20.4.3項「実行時の処理」

20.4.1 式ビルダーの拡張方法

カスタム・オプションを式の値のドロップダウン・リストに追加することによって、式ビルダーを拡張できます。カスタム・オプションを定義し、pe_ext.xmlファイルに含める必要があります。追加する新しい各オプションに対して、<selector>要素を定義し、これをpe_ext.xmlファイルに含める必要があります。

コンポーザ拡張ファイルでカスタム・オプションを構成するには:

1. 式ダイアログにカスタム・オプションを移入するロジックを備えたJava Bean(たとえば、UserInformation.java)を作成します。例20-12に、新しい文字列(User Name)を式ダイアログのカスタム値として表示するために使用するサンプルのJava Beanのコードを示します。

例20-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を登録します。
拡張ファイルの作成の詳細は、第20.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ファイルを保存します。

20.4.2 式言語を保護する方法

アプリケーションまたは特定の.jspxページで、ELを無効化するか、または既存のELを上書きから保護するためにコンポーザを構成できます。これは、第20.11項「「デザイン」ビューでの直接選択の有効化」で説明される「デザイン」ビューでエンド・ユーザーに要素を公開する際に特に役立ちます。

アプリケーションの設定を定義するには、<pe:page-editor-config>タグ内のadf-config.xmlの次の要素を変更します。

- <pe:allow-el>は、ELがアプリケーション・ページで実行できるかどうかを定義します。デフォルトはtrueです。

- <pe:protect-el>は、フォーム要素のELが読取り専用であるかどうかを定義します。デフォルトはfalseです。

特定の.jspxページの動作を定義するには、<pe:pageCustomizable>タグ内の次の要素を使用します。

- allowEL(boolean)は、ELがアプリケーション・ページで実行できるかどうかを定義します。デフォルトはtrueです。

- protectEL(boolean)は、フォーム要素のELが読取り専用であるかどうかを定義します。デフォルトはfalseです。

.jspxページで定義される設定は、adf-config.xmlで定義される設定より優先されます。

20.4.3 実行時の処理

実行時の式ビルダーのセレクタは、図20-9に示すようにカスタム値をデフォルト値とともに表示します。

図20-9 カスタム値を表示する式ビルダー

「図20-9 カスタム値を表示する式ビルダー」の説明

ELが無効な場合、式ビルダーにはアクセスできず、ELはプロパティ・フィールドで許可されません。

ELが保護される場合、属性値としてすでに存在するELは、「パラメータ」タブおよび「表示オプション」タブのいずれかで変更することはできません。(LOVから取得されたELが許可されます。)

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

通常、コンポーザでタスク・フローのパラメータを編集中、図20-10に示すように、ユーザーは「コンポーネント・プロパティ」ダイアログによって提供されたテキスト・ボックスに値を入力します。しかし、ユーザーが特定のフィールドに指定する値について混乱することが多いです。これを推測のままにしておくのではなく、各パラメータが取ることができる値がわかっている開発者は、可能な場合には有効なすべてのオプションをリストすることによってユーザーが容易に操作できるようにすることができます。コンポーザを構成して、値のリスト(LOV)またはピッカーを任意のパラメータに対して表示できます。

図20-10 タスク・フローの「コンポーネント・プロパティ」ダイアログの「パラメータ」タブ

「図20-10 タスク・フローの「コンポーネント・プロパティ」ダイアログの「パラメータ」タブ」の説明

次のオプションを使用して事前定義された一連のパラメータ値を表示できます。

- 静的LOV
事前定義された値のリストを表示します。

- 動的LOV
ページが実行されているときに計算されるEL値を評価して生成される値のリストを表示します。

- グローバルLOV
アプリケーションの任意のタスク・フローで使用できる値のグローバル・リストを表示します。

- ピッカー
ピッカー・フォーマット(たとえば、ドキュメント・ピッカー)ですべての値を表示します。

この項では、様々なタイプのLOVをタスク・フローのパラメータ用に構成する方法を説明します。次のサブセクションが含まれます:

- 第20.5.1項「LOVの構成方法」

- 第20.5.2項「実行時の処理」

この項の手順の説明に使用する例

この項の手順の一部は、図20-11に示すように、選択した都市の天気の情報を表示する単純な天気タスク・フロー(weather-task-flow-definition)の例を使用します。

図20-11 天気タスク・フロー

このタスク・フローには、選択した都市の天気の詳細を選択した温度単位(華氏または摂氏)で表示するようにそれぞれをユーザーが変更できる2つのパラメータ(zipCodeとtempUnits)が用意されています。この天気タスク・フローの例は、次のタイプのLOVを構成する方法を説明するために使用します。

- 図20-12に示すような、tempUnitsパラメータの値CelsiusおよびFahrenheitを持つ静的LOV。

図20-12 tempUnitsパラメータの静的LOV

- 都市名または郵便番号をユーザーが指定して対応する詳細を天気タスク・フローに表示できる2つのフィールドを持つピッカー(図20-13)。

図20-13 zipCodeパラメータの都市ピッカー

- または、実行時に評価されるEL値に基づいて値を表示するzipCodeパラメータの動的LOV(図20-14)。

図20-14 zipCodeパラメータの動的LOV

天気タスク・フローには、例20-13に示すようにコードを備えたタスク・フロー定義ファイル(weather-task-flow-definition.xml)が含まれています。

例20-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を有効にして、ユーザーが事前定義されたオプションのリストから選択できるようにする方法を説明します。

20.5.1 LOVの構成方法

この項では、様々なタイプのLOVをタスク・フローのパラメータ用に構成する方法を説明します。次のサブセクションが含まれます:

- 第20.5.1.1項「静的LOVの構成」

- 第20.5.1.2項「動的LOVの構成」

- 第20.5.1.3項「ピッカーの構成」

- 第20.5.1.4項「グローバル・リストからのLOVの構成」

20.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. ファイルを保存します。

20.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. ファイルを保存します。

20.5.1.3 ピッカーの構成

通常、ピッカーを使用すると、ユーザーは、使用可能なすべてのオプション(色ピッカー、日付ピッカーなど)を表示するポップアップ・ダイアログから値を選択できます。タスク・フローのパラメータのピッカーを構成することには、次の高水準のタスクが含まれます。

- 選択したUIを使用してピッカー・タスク・フローを作成します。

- ピッカー・タスク・フローのパラメータを定義します。これらのパラメータを使用して、メイン・タスク・フローのパラメータ(ピッカーを構成するためのパラメータ)を移入します。

- メイン・タスク・フローのパラメータを構成して、作成したピッカーを表示します。この構成をpe_ext.xmlファイルに追加する必要があります。

この項では、例として天気タスク・フローを使用して、これらの手順を詳細に説明します。zipCodeパラメータの都市ピッカーを構成する方法を示します。ピッカー・タスク・フローでは、ユーザーは、都市名を指定し、その場所の郵便番号を取得できます。ピッカーからの郵便番号は、天気タスク・フローのZipcodeフィールドに入力されます。この項には次のサブセクションが含まれます:

- 第20.5.1.3.1項「ピッカー・タスク・フローの作成」

- 第20.5.1.3.2項「タスク・フローのパラメータに対するピッカーの登録」

20.5.1.3.1 ピッカー・タスク・フローの作成

JSFFフラグメントを使用してピッカー・タスク・フローを作成します。フラグメントを設計して、選択したフィールドまたはオプションを表示します。

ピッカー・タスク・フローを作成するには:

1. アプリケーション・プロジェクトで、ADFタスク・フロー(たとえば、weather-picker-task-flow-definition)を作成します。

1. 「ファイル」メニューから「新規」を選択します。

2. 「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」、「ADFタスク・フロー」の順に選択します。

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

2. ビュー・オブジェクトをタスク・フローに追加します(たとえば、weatherPicker)。

3. ビューをダブルクリックしてweatherPicker.jsffフラグメントを作成します。

関連項目:

タスク・フロー作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFタスク・フローの概説に関する項を参照してください。

4. 選択したコンポーネントを使用してフラグメントを設計します。例20-14に、XMLファイルでユーザーが郵便番号を検索できる2つのInput Textコンポーネントと「OK」と「取消」の2つのUIコントロールを含むサンプルのタスク・フローを示します。

例20-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. タスク・フロー定義ファイルを保存します。

20.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. ファイルを保存します。

実行時にメイン・タスク・フローを編集すると、「コンポーネント・プロパティ」ダイアログにはそのパラメータの隣に拡大アイコンが表示されます。アイコンをクリックすると、ユーザーが値を選択できるピッカー・タスク・フローが起動します。

20.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. ファイルを保存します。

20.5.2 実行時の処理

タスク・フローのパラメータに対して構成したLOVのタイプに応じて、パラメータ値を指定するための異なるオプションがユーザーに表示されます。

図20-15に示された「温度の単位」フィールドには、pe_ext.xmlファイルで定義した静的LOVから値がリストされます。

図20-15 静的LOV

「郵便番号」フィールドのピッカーを構成した場合、このフィールドの右側に拡大アイコンが表示されます。このアイコンは、図20-16に示すように、ユーザーが名前または郵便番号を指定することによって都市を選択できるピッカーを起動します。

図20-16 「郵便番号」フィールドに対して構成されたピッカー・タスク・フロー

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

イベント・ハンドラは、コンポーザを使用して登録され、ユーザーがページでアクションを実行するとコールされるJavaクラスです。たとえば、「保存」ボタンをクリックすると、コンポーザはアプリケーションに保存イベントに応答する機会を与えるアプリケーション・コードにコール・バックします。コンポーザがデフォルトで提供するイベント・ハンドラに加えて、カスタム・プロパティ・パネルの変更を保存するなど、アプリケーション固有のイベントに対して追加のハンドラを構成できます。

この項では、コンポーザでUIイベントのイベント・ハンドラを作成および登録する方法について説明します。次のサブセクションが含まれます:

- 第20.6.1項「コンポーザUIイベントのハンドラの作成および登録の方法」

- 第20.6.2項「イベント・ハンドラを作成および登録する際の処理」

- 第20.6.3項「その他のコンポーザのイベント・ハンドラの構成」

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

コンポーザを使用してイベント・ハンドラを登録すると、これは、対応するイベントがコンポーザUIで起動されるときにコールされます。

この項では、イベント・ハンドラを作成し、コンポーザを使用してこれを登録する方法を説明します。次のサブセクションが含まれます:

- 第20.6.1.1項「イベント・ハンドラの登録をサポートするUIイベント」

- 第20.6.1.2項「保存イベント・ハンドラの作成: 例」

- 第20.6.1.3項「コンポーザを使用したイベント・ハンドラの登録」

20.6.1.1 イベント・ハンドラの登録をサポートするUIイベント

表20-1に、コンポーザが現在ハンドラの登録をサポートするUIイベントをリストします。

表20-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)を使用します。

20.6.1.2 保存イベント・ハンドラの作成: 例

コンポーザを使用してイベントを登録するには、まずJavaクラスを作成し、イベント・ハンドラに適切なリスナーを実装する必要があります。この項では、保存イベント・ハンドラを作成する手順を説明します。表20-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メソッドを宣言する必要があります。例外オブジェクト(作成時)にこのイベントを取り消すための理由を含めることができます。

この例外をスローするとき、このイベントの残りの処理は取り消され、キューに入っているリスナーはスキップされます。

これと同様の手順を実行することによって、サポートされているすべてのイベントのイベント・ハンドラを作成できます。

ヒント:

SaveEvent.isCommitメソッドを使用できます

20.6.1.3 コンポーザを使用したイベント・ハンドラの登録

イベント・ハンドラを作成および実装した後、コンポーザを使用してこれを登録する必要があります。登録は、対応するイベントがUIで発生したときに、ハンドラがコンポーザによってコールされて戻されるようにするために必要です。

コンポーザ拡張ファイル(/META-INF/pe_ext.xml)でイベント・ハンドラを登録します。このファイルの作成の詳細は、第20.2.1.2項「コンポーザを使用したアドオンの登録」を参照してください。

イベント・ハンドラを登録するには:

1. アプリケーションのpe_ext.xmlファイルに、次のエントリを追加します。

<event-handlers>
<event-handler event="save">view.SaveHandler</event-handler>
</event-handlers>

event属性およびevent-handlerタグ間に提供する値は、入力したイベントのタイプおよびイベント・クラスに指定した名前に対して一意です。

2. ファイルを保存します。

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

実行時、登録したイベント・ハンドラは、拡張ファイルの順序およびこれらがクラス・パスで見つかる順序に応じてコールされます。コンポーザのネイティブ・イベント・ハンドラは最後にコールされます。

イベント・ハンドラのprocessEventNameメソッドの起動時に、イベント・ハンドラがiAbortProcessingExceptionをスローする場合、イベントは取り消されて、コンポーザのネイティブ・イベント・ハンドラを含むイベント・ハンドラがこれ以上コールされません。ただし、イベント・ハンドラのインスタンス化時にエラーが発生する場合は、コンポーザが次のイベント・ハンドラを続行します。警告メッセージがログに記録されます。

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

コンポーザのページでトリガーされた各UIイベントでは、対応するイベント・ハンドラはアプリケーションで登録されたリスナーからメソッドをコールして戻します。いくつかの追加の構成を実行することにより、イベント・ハンドラが実行される順序を指定し、リスナーがプロセスを終了するように構成するか、またはイベントが処理されるようにコンポーザに通知できます。

20.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. ファイルを保存します。

20.6.3.2 イベント処理の終了

イベント・ハンドラを構成して、例外をスローすることによって現在のイベントおよびその後のすべてのイベントの処理を終了できます。このためには、リスナーをthrows AbortProcessingExceptionとして実装するときに使用したメソッドを宣言する必要があります。また、ハンドラを構成して、イベントがEvent.setEventHandled(true)メソッドを使用して処理されたことをコンポーザに通知できます。

たとえば、deleteイベント・ハンドラを構成して、現在のイベントおよび保留中のすべての削除イベントを終了し、ユーザーがコンポーザでコンポーネントを削除しようとしたときに例外をスローできます。これを有効にするには、例20-15に示すようにDeletionListenerインタフェースを実装する必要があります。

例20-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)
}
}
}
...
}

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

ドロップ・ハンドラは、コンポーザを使用して登録され、ユーザーがリソース・カタログで「追加」リンクをクリックするとコールされるJavaクラスです。ドロップ・ハンドラは、処理できるデータ・フレーバを宣言します。カタログの各リソースにフレーバがあります。ユーザーがリソースの隣の「追加」リンクをクリックすると、コンポーザは登録されているすべてのドロップ・ハンドラを問い合せ、このフレーバを処理できるかどうか確認します。そのフレーバを処理できるドロップ・ハンドラが1つのみの場合、制御がそのドロップ・ハンドラに渡され、リソースがすぐにページに追加されます。そのフレーバを処理できるドロップ・ハンドラが複数ある場合、コンテキスト・メニューに使用可能なドロップ・ハンドラが表示されます。リソースは、ユーザーがコンテキスト・メニューからJavaドロップ・ハンドラを選択したときにページにドロップされます。

複数のJavaドロップ・ハンドラを持つリソースの例は、カタログでドキュメント・サービスを構成した場合のDocumentsフォルダ内で使用可能なPersonal Documentsサブフォルダです。このサブフォルダは、Content Presenter、Document List ViewerまたはDocument Libraryとして追加できます。

注意:

リリース11.1.1.1で追加操作を処理するために使用されるAdditionListenerメカニズムはまだ使用可能ですが、現在コンポーザはまずドロップ・ハンドラをコールし、カタログで追加操作を処理します。既存のAdditionListenerをドロップ・ハンドラに変換することをお薦めします。

この項では、ドロップ・ハンドラを作成し、これをアプリケーションに登録する手順を説明します。次のサブセクションが含まれます:

- 第20.7.1項「ドロップ・ハンドラの作成および登録の方法」

- 第20.7.2項「実行時の処理」

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

この項では、リソース・カタログからXMLコンテンツを追加するサンプルのドロップ・ハンドラを作成し、コンポーザを使用してこのドロップ・ハンドラを登録する方法を説明します。次のサブセクションが含まれます:

- 第20.7.1.1項「ドロップ・ハンドラの作成」

- 第20.7.1.2項「コンポーザを使用したドロップ・ハンドラの登録」

20.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ファイルを保存します。

20.7.1.2 コンポーザを使用したドロップ・ハンドラの登録

ドロップ・ハンドラを実装した後、コンポーザを使用してこれを登録する必要があります。登録は、ユーザーがカタログで「追加」リンクをクリックしたときに、ハンドラがコンポーザによってコールされるようにするために必要です。コンポーザ拡張ファイル(/META-INF/pe_ext.xml)でドロップ・ハンドラを登録します。このファイルの作成の詳細は、第20.2.1.2項「コンポーザを使用したアドオンの登録」を参照してください。

ドロップ・ハンドラを登録するには:

1. pe_ext.xmlファイルで、次のエントリを追加します。

<drop-handlers>
<drop-handler>test.TestDropHandler</drop-handler>
</drop-handlers>

ここで、TestDropHandlerはドロップ・ハンドラの実装の名前です。

2. ファイルを保存します。

必要数の<drop-handler>要素を追加することによって、拡張ファイルに任意の数のドロップ・ハンドラを登録できます。

20.7.1.3 XMLコンポーネントのリソース・カタログへの追加

XmlComponentFactoryクラスによって生成されたXMLコンポーネントのドロップ・ハンドラを作成したため、XMLコンポーネントをリソース・カタログに追加してからそのコンポーネントを実行時にページに追加することによって、実行時にドロップ・ハンドラがどのように動作するかをテストできます。

XMLコンポーネントをカタログに追加するには:

1. デフォルトのカタログ定義ファイル(default-catalog.xml)を開きます。
このファイルの場所の詳細は、第15.2.7項「アプリケーションまたはページ用のデフォルト・リソース・カタログの構成方法」を参照してください。

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ファイルを保存します。
実行時、リソース・カタログには、図20-17に示すようにXMLコンポーネントが表示されます。詳細は、第15.2.3.4項「コンポーネントの追加」を参照してください。

図20-17 カタログのXMLコンポーネント

「図20-17 カタログのXMLコンポーネント」の説明

20.7.2 実行時の処理

ユーザーがカタログのコンポーネントの「追加」リンクをクリックすると、そのフレーバをサポートしているすべてのドロップ・ハンドラが「追加」リンクのコンテキスト・メニューのオプションとして表示されます。ただし、そのフレーバを処理できるドロップ・ハンドラが1つのみの場合、リソースはすぐにページに追加されます。

図20-18に、Custom XMLオプションおよびデフォルトのXMLオプションを備えたTest XMLコンポーネントの「追加」リンクをクリックしたときに表示されるコンテキスト・メニューを示します。

図20-18 カタログのXMLコンポーネントのドロップ・ハンドラ

「図20-18 カタログのXMLコンポーネントのドロップ・ハンドラ」の説明

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

一部のコンポーネント・プロパティは、デフォルトでフィルタ処理によって除外されるため、コンポーザの「コンポーネント・プロパティ」ダイアログに表示されません。デフォルトのフィルタは、コンポーザの拡張ファイル(/META-INF/pe_ext.xml)の<filter-config>セクションで定義されています。

グローバル・フィルタは、すべてのコンポーネントの属性をフィルタ処理します。これらは<global-attribute-filter>タグを使用して定義されます。タグ・レベルのフィルタは、指定したコンポーネントの属性のみをフィルタ処理します。これらは<taglib-filter>タグを使用して定義されます。

注意:

拡張ファイルでは、任意の数の<taglib-filter>タグを<filter-config>の下に持つことができますが、すべてのグローバル属性フィルタを定義する<global-attribute-filter>タグは1つのみ持つことができます。

「コンポーネント・プロパティ」ダイアログでさらに多くのプロパティを非表示にするために追加のフィルタを定義できます。この項では方法について説明します。次のサブセクションが含まれます:

- 第20.8.1項「プロパティ・フィルタの定義方法」

- 第20.8.2項「実行時の処理」

- 第20.8.3項「プロパティ・フィルタの削除方法」

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

コンポーザは、組込みフィルタ構成を定義します。拡張ファイル(pe_ext.xml)を使用して、追加のプロパティ・フィルタの定義およびフィルタの削除を実行できます。(1つのタグに対してでも)異なる拡張ファイルで任意の数のフィルタを定義できます。コンポーザは、すべての拡張ファイルからのフィルタ処理情報をマージします。

注意:

pe_ext.xmlファイルの作成の詳細は、第20.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>

ファイルを保存します。

20.8.2 実行時の処理

実行時、コンポーザのプロパティを編集すると、フィルタ処理によって除外されたプロパティは「コンポーネント・プロパティ」ダイアログにレンダリングされません。

20.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. ファイルを保存します。

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

タスク・フローで受け渡すパラメータを有効にする場合、管理者は、特定のパラメータを設定することによってカスタマイズ・マネージャをカスタマイズできます。デフォルトでは、管理者は、コンポーザのカスタマイズ・マネージャ・タスク・フローにパラメータを渡すことはできません。表20-2に、カスタマイズ・マネージャ・タスク・フローによってサポートされるパラメータを示します。

表20-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>>

「現在のコンテキスト」列で使用可能である必要があるレイヤーのリストを指定するために使用します。

このパラメータは、レイヤー名およびレイヤー値のリストならびに「現在のコンテキスト」列に表示する必要があるパターンを取ります。詳細は、例20-16を参照してください。

showLayersforAll

Map<String,List<String>>

「すべてのレイヤー」列で使用可能である必要があるレイヤーのリストを指定するために使用します。

このパラメータは、レイヤー名およびレイヤー値のリストならびに「すべてのレイヤー」列に表示する必要があるパターンを取ります。詳細は、例20-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は連続化可能です。

この項では、カスタマイズ・マネージャ・タスク・フローでパラメータの編集を可能にする手順を説明します。次のサブセクションが含まれます:

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

- 第20.9.2項「パラメータのサポートを有効にした場合の処理」

20.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>内で、例20-16に示すように、デフォルトのカスタマイズ・マネージャ・パネルの<pe:addon-panel>エントリを追加し、parameters属性をappUtilBean.customizationManagerParamsに設定することによって定義します。

例20-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ファイルを保存します。

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

カスタマイズ・マネージャは、新しいパラメータ設定の基づいてユーザーにオプションを表示します。

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

要素を追加、削除または再配置し、既存の要素を上書きすることによってデフォルトのコンポーザのツールバーをカスタマイズできます。ツールバーの拡張性を有効にするために、コンポーザのツールバーの要素がセクションにグループ化されています。これらのセクションを使用してツールバーをカスタマイズできます。各セクションには特定の名前があり、図20-19に示すようにその中に1つ以上の要素が含まれています。

図20-19 コンポーザのツールバー

「図20-19 コンポーザのツールバー」の説明

注意:

「保存」ボタンがツールバーに表示されるのは、アプリケーションがサンドボックスを使用するように構成されている場合のみです。詳細は、第22.2項「コンポーザのサンドボックスの使用」を参照してください。

「ヘルプ」アイコンがツールバーに表示されるのは、アプリケーションでヘルプ・プロバイダを構成した場合またはコンポーザ・パネルまたはダイアログからヘルプをフックアップした場合のみです。

コンポーザのツールバーは、ADF Faces Toolboxタグを使用して作成されます。ツールバーの各行はToolbarタグです。したがって、セパレータ・バーなどのUIコンポーネントはToolbarコンポーネントから継承されます。

表20-3ではツールバーの領域を説明します。

表20-3 ツールバーの領域

セクションまたは領域

説明

message

ページ名付きのメッセージを含む領域。

statusindicator

ステータス・インジケータを含む領域。

menu

ユーザーが「設計」ビューと「ソース」ビューを切り替えることができる「表示」メニューを含む領域。

addonpanels

コンポーザのアドオンを含む領域。アドオンは、この領域内ですべて順次表示されます。詳細は、第20.2項「コンポーザのアドオンの作成」を参照してください。

help

「ヘルプ」アイコンを含む領域。

button

「保存」ボタンおよび「閉じる」ボタンを含む領域。

stretch

2つのセクション間の広い空間。

newline

セクション間の改行。改行の後のすべてのセクションは、ツールバーで新しい行になります。

ツールバー・セクションを使用して、次の方法でコンポーザのツールバーをカスタマイズできます。

- 組込み要素の再配置および非表示

- カスタム要素を使用した新しいセクションの追加

- デフォルトのセクションを変更してカスタム要素を表示

この項では、コンポーザのツールバーをカスタマイズする手順を説明します。次の項が含まれます:

- 第20.10.1項「ツールバー要素を再配置または非表示にする方法」

- 第20.10.2項「実行時の処理」

- 第20.10.3項「新しいセクションをツールバーに追加する方法」

- 第20.10.4項「ツールバーのセクションを上書きしてカスタム・コンテンツを表示する方法」

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

Page CustomizableコンポーネントのtoolbarLayout属性を使用して、表示するツールバーのセクションおよびその表示順を制御します。

アプリケーションのすべての編集可能ページのツールバーをカスタマイズするために、テンプレートを作成し、Page Customizableコンポーネントをテンプレートに追加し、toolbarLayout属性をPage Customizableコンポーネントに対して指定できます。その後、このテンプレートに基づいてアプリケーションのすべてのページをカスタマイズできます。

toolbarLayoutの値を指定しないと、この属性は、コンポーザのツールバーのセクションのデフォルト・レイアウトであるmessage stretch statusindicator newline menu addonpanels stretch help buttonに内部的に設定されます。

アプリケーション・ページのツールバーをカスタマイズするには:

1. JDeveloperのカスタマイズ可能なJSPXページを開き、「構造」ウィンドウでPage Customizableコンポーネントを選択します。

2. プロパティ・インスペクタで、toolbarLayout属性に空白区切り値を指定します。
表20-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ファイルを保存します。

20.10.2 実行時の処理

実行時に、ツールバーに、指定した順序で指定したセクションが表示されます(図20-20)。

図20-20 カスタマイズされたコンポーザのツールバー

「図20-20 カスタマイズされたコンポーザのツールバー」の説明

20.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. ページを保存します。
実行時に、図20-21に示すように、コンポーザのツールバーに「バグをレポート」ボタンが表示されます。

図20-21 カスタム・セクションを持つコンポーザのツールバー

「図20-21 カスタム・セクションを持つコンポーザのツールバー」の説明

「バグをレポート」ボタンをクリックすると、ユーザーが不具合をレポートできる「バグをファイル」ダイアログが表示されます。

20.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>

図20-22に、実行時にページに表示するコンポーザのツールバーを示します。

図20-22 カスタム・メッセージを含むコンポーザのツールバー

「図20-22 カスタム・メッセージを含むコンポーザのツールバー」の説明

20.11 「デザイン」ビューでの直接選択の有効化

直接選択により、ユーザーはコンポーザの「ソース」ビューから「デザイン」ビューまで特定のカスタマイズ機能を拡張し、実行時にページ内から要素を変更できます。これにより、基礎となるアプリケーションにダメージを及ぼさないような安全な環境を作りながら、ビジネス・ユーザーの手でより多く制御することができます。

すべての直接選択機能は、「ソース」ビューで使用できますが、ビジネス・ユーザーには「ソース」ビューを安全かつ効率的に使用する知識や経験がありません。これらのユーザーは簡単にページを壊して、アプリケーション・ロジックを回避することができます。

直接選択を使用して、少数の選択したコンポーネントを選択可能および編集可能にすることができます。たとえば、フォーム内のフィールドの順序の変更、フォーム・フィールドのラベルの変更、表内の列名の変更またはフォームの特定のフィールドの非表示など。

直接選択機能の詳細は、第20.11.2項「実行時の処理」を参照してください。

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

この項では、アプリケーションで直接選択を有効化および構成する方法について説明します。

1. まず、コンポーザの「デザイン」ビューで直接選択を有効化する必要があります。<pe:page-editor-config>タグ内のadf-config.xmlで、使用可能なビューを定義するために<pe:enable-design-views>タグを追加します。使用可能な定数値は次のとおりです。

- all: すべてのビューを使用可能にして、ビュー間を切り替えるボタンを含むツールバーを表示します。

- add-content(デフォルト): レガシーな「デザイン」ビューを唯一の使用可能なビューにします。

- select: 「選択」ビューを唯一の使用可能なビューにします。

- select add-content: 使用可能なビューを「選択」ビューおよびレガシーな「デザイン」ビューのみに制限します(追加のビューは今後のリリースで追加されます)。ビュー間を切り替えるボタンを含むツールバーを表示します。

下の例に示すように、ELを使用して適切なビューを決定することもできます。

<pe:enable-design-views>#{testBean.designViews}</pe:enable-design-views>

注意:

この設定は、アプリケーションのデフォルトを定義します。designViews=""属性を使用してpageCustomizableタグでこの設定を上書きできます。

デフォルトで、「デザイン」ビューを開いたり閉じたりするホット・キーはCtrl-Shift-Sです。ホット・キーを変更または無効にするには、<pe:page-editor-config>タグ内の<pe:component-view-switch-key>タグを追加します。例:

<pe:component-view-switch-key>
<pe:enabled>true</pe:enabled>
<pe:key-sequence>ctrl shift l</pe:key-sequence>
</pe:component-view-switch-key>

2. pe-ext.xmlで、特定のコンポーネントの直接選択を有効化または無効化するために<selection-config>タグを追加し、関連付けられた操作を定義します。コンポーネントを選択可能にするためには、このタグ内で操作を定義する必要があります。(操作が定義されておらず、選択がコンポーネントに対して有効になっていない場合、コンポーネントを選択すると空のフレームが表示されます。)
<selection-config>タグ内で、<global-filter>を使用して、また<selection-taglib-filter>を使用してネームスペースおよびタグによって、直接選択をグローバルに構成できます。<selection>タグには2つの必須属性があります。

- view: タグで構成されるビューを定義します。現在のリリースでは、唯一の許容値はdesignです(直接選択はソース・ビューでは無効にできません)。

- enabled: 直接選択が指定されたビューで有効化されるかどうかを設定します。

利用可能な操作は、各特定コンポーネントの下の<operation>タグ内で定義されています。次の要素は、操作の定義に使用されます。

- name: 実行される操作(標準またはカスタム)を定義します。操作名はプロパティ・パネルIDと同じです。標準操作のリストは、第B.3.2「デフォルトのプロパティ・パネルの項」を参照してください。カスタム操作の場合、名前はカスタム・パネルIDと同じです。カスタム操作の詳細は、第20.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>

さらにユーザー経験を簡単にするため、直接選択によりユーザーは、よリ少数のセットが表示されるようにタグの特定の属性をフィルタできます。詳細は、第20.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が上書きされないようにするには、第20.4.2項「式言語を保護する方法」を参照してください。

特定の要素の詳細は、付録B「コンポーザ・コンポーネントのプロパティおよびファイル」を参照してください。

- 第B.2.1.8項「selection-config」

- 第B.2.2.5項「enable-design-views」

- 第B.2.2.6項「allow-elとprotect-el」

20.11.2 実行時の処理

直接選択が有効になっている場合、実行時のページの外側表示はエンド・ユーザーに対して同じです。適切な権限を持つユーザーがCtrl-Shift-Sをクリックする場合、ページに「デザイン」ビューが表示されます。

「デザイン」ビューには、コンポーザのツールバーが含まれています。複数のビューが有効化される場合、ページには、前述のイメージに示すように、ビュー間を切り替えるための「デザイン」および「選択」ボタンを持つ2番目のツールバーも含まれます。単一ビューのみが有効化される場合、これらのボタンは表示されません。

注意:

唯一の使用可能なビューとして'select'が定義されている場合、ユーザーには「デザイン」ビューからコンテンツを追加する方法はありません。唯一の使用可能なビューとして'add-content'が定義されている場合、ユーザー経験は、直接選択が有効化されていない場合と同じです。

コンポーネントのプロパティを編集するには、ユーザーは有効な要素を選択し、「コンポーネントの編集」または「親コンポーネントの編集」(適用可能な場合)をクリックします。

図jpsdg_page_editor_adv_pop.gifの説明

「コンポーネント・プロパティ」ポップアップ・ウィンドウにより、ユーザーはコンポーネントに対して定義されたプロパティを編集し、コンポーネントに対して構成された他の操作にアクセスできます。ユーザーが「親コンポーネントの編集」を選択した場合、「子の管理」タブがウィンドウに含まれています。ELが上書きが許可されないか、上書きから保護されない場合、下のイメージで示すように、「式ビルダー」および「オーバーライド」オプションが使用できません。このイメージには編集から保護されるフィールドの例も含まれています(「コンポーネントの表示」)。

図jpsdg_page_editor_adv_prop.gifの説明

複数の操作がポップアップ・ウィンドウのタブに表示されます。タブの順序はパネル登録で定義されています。操作が囲んでいるコンポーネントに対して登録されていない場合、その操作のタブは表示されません。パネル登録の詳細は、第20.3項「カスタム・プロパティ・パネルの作成」を参照してください。

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

この項では、コンポーザの拡張性機能を使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

ロギングの構成の詳細は、第19章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

問題

アドオンを作成したが、コンポーザのツールバーに表示されません。

解決方法

次の点を確認してください。

- pe_ext.xmlファイルがアプリケーションまたはJARファイルの/META-INFフォルダにあり、クラス・パスで利用可能です。

- パネルをpe_ext.xmlで登録する際に指定したタスク・フロー・バインディングIDが的確です。

- <pe:addon-panel>エントリがadf-config.xmlファイルの<pe:page-editor-config>セクションの下に存在します。

- アドオンがJARファイルにある場合、JARファイルがADFライブラリとして作成されていることを確認してください。

アドオンの詳細は、第20.2項「コンポーザのアドオンの作成」を参照してください。

問題

カスタム・プロパティ・パネルを登録しました。ただし、そのプロパティを表示するコンポーネントを選択するときに、それが「コンポーネント・プロパティ」ダイアログに表示されません。

解決方法

次の点を確認してください。

- pe_ext.xmlファイルがアプリケーションまたはJARファイルの/META-INFフォルダにあり、クラス・パスで利用可能です。

- パネルをpe_ext.xmlで登録する際に指定したタスク・フロー・バインディングIDが的確です。

- property-panelの登録が正しく、パネルを表示するコンポーネントに対して指定されています。さらに、コンポーネントの完全修飾クラス名がcomponentノードを使用して正しく指定されています。

- プロパティ・パネルの登録の重複によってパネル・エントリが上書きされていません。

- レンダリングされた属性を使用するようにパネルが構成されている場合、値またはELがtrueに評価されています。

- アドオンがJARファイルにある場合、JARファイルがADFライブラリとして作成されていることを確認してください。

カスタム・プロパティ・パネルの詳細は、第20.3項「カスタム・プロパティ・パネルの作成」を参照してください。

問題

「コンポーネント・プロパティ」ダイアログでコンポーネントの一部のプロパティが表示されません。

解決方法

コンポーネント・プロパティがフィルタ処理されていないことおよび制限されていないことを確認します。詳細は、第20.8.1項「プロパティ・フィルタの定義方法」および第23.4項「属性レベルのセキュリティの適用」を参照してください。

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

この章では、コンポーザの特定の拡張構成を実行し、エンド・ユーザーの操作性を向上する方法を説明します。次の項が含まれます:

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

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

- 第21.3項「タスク・フローでのカスタム・アクションの有効化」

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

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

- 第21.6項「イベント対応のタスク・フローの作成」

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

- 第21.8項「アプリケーションの「ソース」ビュー・メニューの無効化」

- 第21.9項「タスク・フローのズーム機能の無効化」

- 第21.10項「コンポーネントへのスタイルの適用」

- 第21.11項「永続性変更マネージャの構成」

- 第21.12項「実行時リソース文字列編集の構成」

21.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. このオプションの右にある矢印をクリックします。

3. サポートされているファセットのリストから追加するファセットを選択します。

注意:

ファセット名の隣のチェック・マークは、ファセットがすでにShow Detail Frameコンポーネントに挿入されていることを意味します。そのファセット名を再度選択すると、このファセットはページから削除されます。

そのファセットのf:facet要素はページに挿入されます。

4. 設計要件に応じてファセットにコンポーネントを追加します。
Show Detail Frameファセットを作成して使用するエンド・ツー・エンド例は、第21.2項「ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化: 例」を参照してください。

21.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コンポーネントのテキストをカスタマイズできます。この項では、この結果を得るための手順を説明します。次のサブセクションが含まれます:

- 第21.2.1項「ADFタスク・フローの作成方法」

- 第21.2.2項「追加のアクション・ファセットを組み込む方法」

- 第21.2.3項「リダイレクト・ページの作成方法」

- 第21.2.4項「ページ間のナビゲーション・ルールの作成方法」

- 第21.2.5項「実行時の処理」

21.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を保存して閉じます。

21.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値として指定します。
構造ナビゲータでのページは、図21-1のように表示されます。

図21-1 構造ナビゲータでのPage1.jspx

「図21-1 構造ナビゲータでのPage1.jspx」の説明

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

21.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つのページ間を切り替えることができます。

21.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. ファイルを保存します。

21.2.5 実行時の処理

JDeveloperでPage1.jspxを実行します。showDetailFrame1コンポーネントの「アクション」メニューに、図21-2に示すように「カスタマイズ」アクションが表示されます。

図21-2 「アクション」メニューの「カスタマイズ」アクション

「図21-2 「アクション」メニューの「カスタマイズ」アクション」の説明

「カスタマイズ」をクリックすると、Page2.jspx (図21-4)が表示され、ここでLabel1およびLabel2の値を更新できます。

図21-3 テキストを編集するオプションを備えたページ

「図21-3 テキストを編集するオプションを備えたページ」の説明

「OK」をクリックするとPage1.jspxに戻り、ここで図21-4に示すように最近のテキスト変更が反映されます。

図21-4 更新されたテキストを含むPage1

「図21-4 更新されたテキストを含むPage1」の説明

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

タスク・フローをShow Detail Frameコンポーネントに含めることによって、これをカスタマイズできます。Show Detail Frameコンポーネントには、コンポーネントを再配置、表示または非表示にする特定のデフォルトのアクションが用意されています。さらに、カスタム・アクションを定義して、実行時にタスク・フロー内で目的のナビゲーション・フローをトリガーできます。タスク・フローでカスタム・アクションを有効にできる方法は2つあります。

- カスタム・アクションがShow Detail Frameコンポーネントの「処理」メニューに表示されるように、タスク・フローでカスタム・アクションを直接有効にします。

- カスタム・アクションがShow Detail Frameコンポーネントの「処理」メニューに表示されるように、タスク・フローを囲んでいるShow Detail Frameコンポーネントでカスタム・アクションを有効にします。

この項では、両方のアプローチについて説明します。次のサブセクションが含まれます:

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

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

- 第21.3.3項「実行時の処理」

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

21.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>要素の下に任意の数のカスタム・アクションを追加できます。

例21-1に、<customAction>エントリを含むadf-settings.xmlファイルのコードを示します。

例21-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ファイルを保存します。

21.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でのカスタム・アクションの定義について説明します。次のサブセクションが含まれます:

- 第21.3.2.1項「インスタンス・レベルでのカスタム・アクションの定義」

- 第21.3.2.2項「グローバル・レベルでのカスタム・アクションの定義」

- 第21.3.2.3項「別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示するカスタム・アクションの構成」

21.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の結果を移入してください。コードは、例21-2のようになります。

例21-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の「処理」メニューから処理を選択すると、関連する制御フロー・ルールがトリガーされ、ターゲットのタスク・フロー・フラグメントがレンダリングされます。

21.3.2.2 グローバル・レベルでのカスタム・アクションの定義

グローバル・レベルでカスタム・アクションを定義することは、そのカスタム・アクションをアプリケーションのすべてのShow Detail Frameインスタンスで使用可能にすることを意味します。グローバル・レベルのカスタム・アクションはアプリケーションのすべてのShow Detail Frameコンポーネントで使用可能ですが、実行時にShow Detail Frameのヘッダーにはタスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみが表示されます。

グローバル・レベルのカスタム・アクションは、アプリケーションのadf-config.xmlファイルで定義します。

グローバル・レベルでカスタム・アクションを定義するには:

1. アプリケーションのadf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

2. 例21-3に示すように、各アクションに対してネストされた<customAction>タグを備えた<customActions>要素を使用してカスタム・アクションを定義します。

ヒント:

ページ編集モードにのみカスタム・アクションをレンダリングするために、<customAction>タグのrendered属性を#{composerContext.inEditMode}に設定できます。こうすると、ページが編集モードの場合にtrueの値が返されます。

例21-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>

注意:

- 第23.5項「Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用」の手順を実行してShow Detail Frameコンポーネントのアクションに制限を実装した場合、cust:customizableComponentsSecurityセクションはすでにadf-config.xmlファイルにあります。例21-3に示すcust:adf-config-childセクションではなく前述のセクション自体でカスタム・アクションを定義できます。

- カスタム・アクションのアイコンを定義する場合、指定するイメージがプロジェクト・ルート・フォルダで利用できることを確認する必要があります。

- ページのすべてのタスク・フローで定義された内部アクションのカスタム・アクションを定義できますが、実行時、Show Detail Frameのヘッダーは、タスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみを表示します。

3. adf-config.xmlファイルを保存します。

カスタム・アクションの定義の詳細は、第21.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の場合、カスタム・アクション属性の動作は次のようになります。

- カスタム・アクション属性をインスタンス・レベルで定義した場合、同じ属性がグローバル・レベルで指定されているかどうかにかかわらず、その値が使用されます。

- カスタム・アクション属性をグローバル・レベルでのみ定義した場合、その値が使用されます。

- カスタム・アクション属性をグローバル・レベルでもインスタンス・レベルでも定義しなかった場合、属性のデフォルト値が使用されます。

アプリケーション・ページを設計した後、アプリケーションを本番環境にデプロイする必要があります。詳細は、第69章「WebCenter Portal: Frameworkアプリケーションのデプロイおよびテスト」を参照してください。

注意:

開発環境のページで実行する実行時カスタマイズは、アプリケーションをターゲット・サーバーにデプロイするときに引き継がれません。

21.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"/>

例21-4に、adf-config.xmlファイルでカスタム・アクションを定義して、タスク・フローの結果に対応するグローバル・カスタム・アクションを指定する方法を示します。Command ButtonコンポーネントのIDは、カスタム・アクションのactionComponent属性に対して指定されます。

例21-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>

例21-5に、コンポーザ・タグ・ライブラリからJSPXページにCustom Actionコンポーネントを追加して、タスク・フローの結果に対応するインスタンス・レベルのカスタム・アクションを指定する方法を示します。Command ButtonコンポーネントのIDは、カスタム・アクションのactionComponent属性に対して指定されます。

例21-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>

注意:

ポップアップ・ダイアログで起動されるカスタム・アクションは、新しいリクエストとしてサーバーに送信されます。コンポーザのサンドボックスを使用していて、ページ編集モードで操作している場合、このリクエストはコードをサーブレット・フィルタに追加することによって表示モードで起動され、新しいサンドボックスはこのページで作成されません。

21.3.3 実行時の処理

adf-settings.xmlファイルで構成したカスタム・アクションは、adf-config.xmlファイルで構成したカスタム・アクションとマージされ、選択したタスク・フローの現在のビューと関係のあるすべてのアクションが親のShow Detail Frameコンポーネントの「処理」メニューに表示されます。

グローバル・レベルでカスタム・アクションを有効にした場合、これらのカスタム・アクションが子のタスク・フローの現在のビューのナビゲーション結果に対応する場合、Show Detail Frameのヘッダーにこれらのカスタム・アクションが表示されます。

action属性値に接頭辞dialog:を付けると、タスク・フローのターゲット・ビューが別個のブラウザ・ウィンドウに開きます。

21.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コンポーネント内に配置します。
カスタマイズ可能ページの作成の詳細は、第19.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つのフラグメントのナビゲーション・ルールが表示されることに注意してください(図21-5)。

図21-5 タスク・フローを囲んでいるShow Detail Frameのカスタム・アクション

「図21-5 タスク・フローを囲んでいるShow Detail Frameのカスタム・アクション」の説明

アクションでこれを表示するには、サンプル・アプリケーション(CustomActions.jws)をOracle Technology Network (OTN)のOracle WebCenter Portal 11gのデモとサンプルのページで探してください。

http://webcenter.oracle.com

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

コンポーザの「ソース」ビューのコンポーネント・ナビゲータには、図21-6に示すように、タスク・フローにズーム・インし、そのページまたはフラグメントのコンポーネントを表示するオプションが用意されています。

図21-6 タスク・フロー・インスタンスの編集処理

「図21-6 タスク・フロー・インスタンスの編集処理」の説明

ユーザーは、ズーム・インし、ページまたはフラグメントを編集し、タスク・フローからズーム・アウトしてそのタスク・フローを含むページにナビゲートして戻ることができます。タスク・フロー名の隣に表示される「タスク・フローの編集」リンクおよび「閉じる」リンクに加えて、図21-7に示すように、タスク・フロー名の隣にカスタム・アクションも表示するようにアプリケーションを構成できます。

図21-7 タスク・フロー・インスタンスのカスタム・アクション

「図21-7 タスク・フロー・インスタンスのカスタム・アクション」の説明

この項では、コンポーネント・ナビゲータでタスク・フローのカスタム・アクションを有効にする手順を説明します。次の項が含まれます:

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

- 第21.4.2項「実行時の処理」

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

コンポーネント・ナビゲータでタスク・フローに対するカスタム・アクションを表示するには、カスタム・アクションの動作を定義するJava Beanを作成し、このBeanをタスク・フローを含むアプリケーション・ページからコールする必要があります。この項では、これを行う手順を詳細に説明します。次のサブセクションが含まれます:

- 第21.4.1.1項「カスタム・アクションのロジックの定義」

- 第21.4.1.2項「カスタム・アクションを含むJSPXページの作成」

- 第21.4.1.3項「タスク・フローを含むアプリケーション・ページからのJSPXページのコール」

21.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を保存します。

21.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ページを保存します。

21.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値を取ることができます。

21.4.2 実行時の処理

ブラウザに対してMyPage.jspxを実行し、コンポーザの「ソース」ビューを開くと、コンポーネント・ナビゲータは、ページの各タスク・フロー・インスタンスの隣に「テスト」リンクおよび「タスク・フローの編集」リンクを表示します。図21-8に、「テスト」リンクを強調表示して、コンポーネント・ナビゲータのMyPage.jspxを示します。「テスト」リンクをクリックすると、ユーザーにサンプル・メッセージが表示されます。

図21-8 コンポーネント・ナビゲータでタスク・フローに対して表示されたカスタム・アクション

「図21-8 コンポーネント・ナビゲータでタスク・フローに対して表示されたカスタム・アクション」の説明

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

通常、ユーザーは、ページで「編集」リンクまたはボタンをクリックしてページ編集モードに入ります。アプリケーションを構成して、キーボード・ショートカットを使用してページ編集モードにユーザーが入ることができるようにできます。さらに、アプリケーションを構成して、ショートカット・キーを使用して他のイベントを実行できます。この項では、コンポーザに対してキーボード・ショートカットを有効にして、そのショートカット・キーのイベント・ハンドラを構成する方法を説明します。次のサブセクションが含まれます:

- 第21.5.1項「編集モードへのリンクなしのエントリを有効にする方法」

- 第21.5.2項「ショートカット・キーのイベント・ハンドラの構成方法」

- 第21.5.3項「実行時の処理」

21.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. 例21-6に示すように、<pe:mode-switch-key>プロパティを追加し、その値をtrueに設定します。この例は、ショートカット値がCtrl+Eである<pe:key-sequence>プロパティを示します。

例21-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. ファイルを保存します。

21.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
}

21.5.3 実行時の処理

ユーザーは、構成したショートカットを使用してアプリケーション・ページにアクセスし、編集モードに入れます。

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

コンポーザには、タスク・フローのイベントをコンテキストに即して関連付ける方法が用意されています。コンテキスト・イベントをアクション・ハンドラと関連付け、プロデューサでイベントがトリガーされたときにプロデューサ・コンポーネントからコンシューマ・コンポーネントに値を渡すことができます。

実行時に使用可能なイベントの場合、設計時にイベント機能をタスク・フローに組み込む必要があります。イベント対応のタスク・フローをカスタマイズ可能ページに追加すると、各タスク・フローの「コンポーネント・プロパティ」ダイアログに「イベント」タブが組み込まれ、ここで関連付けアクティビティの多くが行われます。イベント機能の組込みの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のコンテキスト・イベントの作成に関する項を参照してください。

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

ページで「編集」ボタンまたはリンクをクリックしてユーザーがコンポーザを起動すると、ページはデフォルトでは「設計」ビューで開きます。ビジネスで必要な場合、デフォルトでコンポーザの「ソース」ビューで表示するようにアプリケーション・ページを構成できます。

21.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」を参照してください。

21.7.2 実行時の処理

ユーザーが「編集」リンクまたはボタンをクリックすると、コンポーザは「ソース」ビューでページを開きます。

21.8 アプリケーションの「ソース」ビュー・メニューの無効化

すべてのユーザーが「ソース」ビューにアクセスできるように、デフォルトで、ビュー・メニューはコンポーザ対応のページで有効になっています。タスク・フロー、ポートレットおよびレイアウト・コンポーネント以外のページ・コンポーネントをユーザーが編集できないようにする場合は、ビュー・メニューを無効にできます。この項には次のサブセクションが含まれます:

- 第21.8.1項「「ソース」ビューを無効にする方法」

- 第21.8.2項「実行時の処理」

注意:

「ソース」ビューの編集機能の詳細は、第17.5項「ページ編集モードのソース・ビューでの編集機能」を参照してください。

21.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. 例21-7に示すように、enable-source-viewプロパティを追加し、その値をfalseに設定します。

例21-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. ファイルを保存します。

21.8.2 実行時の処理

ユーザーがページ編集モードに切り替えると、図21-9に示すように、ページは「設計」ビューでレンダリングされ、「表示」メニューはユーザーに表示されません。

図21-9 「表示」メニューが表示されないページの「設計」ビュー

「図21-9 「表示」メニューが表示されないページの「設計」ビュー」の説明

21.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. 例21-8に示すように、<pe:enable-zoom>プロパティを追加し、その値をfalseに設定します。

例21-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. ファイルを保存します。

タスク・フローにズーム・インする機能はアプリケーション全体で無効になります。

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

次のいずれかの方法を使用して、コンポーネントのヘッダーおよびコンテンツに様々なスタイルを適用することによって、コンポーザ・コンポーネントのルック・アンド・フィールを変更できます。

- スタイル・セレクタを使用してスキンを構築し、スキンを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値のいずれにも優先されます。

図21-10 プロパティ・インスペクタでのcontentStyleおよびinlineStyleのスタイルの定義

「図21-10 プロパティ・インスペクタでのcontentStyleおよびinlineStyleのスタイルの定義」の説明

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

セッション間でユーザー・カスタマイズおよびアプリケーション・カスタマイズを永続するには、アプリケーションを構成して変更の永続性フレームワークを使用する必要があります。コンポーザ・コンポーネントをカスタマイズ可能ページに追加すると、コンポーザは、アプリケーションを構成してComposerChangeManagerを使用し、実行時にページに対して行われた変更が適切に永続されます。

リリース11.1.1.1のアプリケーションのデフォルトの変更の永続性の動作では、編集モードの変更をMDSに保存します。表示モードの変更は永続されず、そのセッションでのみ使用できます。表示モードの変更もセッション間で使用できるようにMDSに永続するために、11.1.1.1のアプリケーションを構成してComposerChangeManagerを使用できます。

この項では、コンポーザ対応ページを含む新しいFrameworkアプリケーションのデフォルトの変更マネージャ構成について説明し、既存のリリース11.1.1.1のアプリケーションを構成してComposerChangeManagerを使用する方法を説明します。次の項が含まれます:

- 第21.11.1項「デフォルトの変更マネージャ構成の概要」

- 第21.11.2項「既存の11.1.1.1のアプリケーションでのComposerChangeManagerの構成方法」

21.11.1 デフォルトの変更マネージャ構成の概要

コンポーザ・コンポーネントをアプリケーション・ページに初めて追加するとき、コンポーザは次のことを行い、変更の永続性を有効にします。

- 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セクションは、デフォルトで永続化されるコンポーネント・タグと属性をリストしています。これは、コンポーザの外側(すなわち、表示モードで)使用される場合に、showDetailFrame、panelCustomizableおよびlayoutCustomizableに関係するセッション全体で永続化される内容を定義します。たとえば、次の例に示すように、表示モード(showDetailFrame)でサイズ変更が永続化されるかどうかを定義できます。

<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
...
<taglib-config>
<taglib uri="http://xmlns.oracle.com/adf/faces/portlet">
<tag name="portlet">
<attribute name="expansionMode">
<persist-changes>
true
</persist-changes>
</attribute>
</tag>
</taglib>
<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に設定することによって、そのタグおよび属性の変更の永続性を有効にできます。詳細は、第23.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へ)永続される必要があるためです。

21.11.2 既存の11.1.1.1のアプリケーションでのComposerChangeManagerの構成方法

コンポーザ対応ページを含むリリース11.1.1.1のFrameworkアプリケーションは、デフォルトで編集モードの変更を永続するMDSDocumentChangeManagerを使用します。現在コンポーザには、ユーザー・カスタマイズおよびアプリケーション・カスタマイズを永続するためにComposerChangeManagerが用意されているため、(表示モードでの)ユーザー・カスタマイズもMDSに永続するために、既存のアプリケーションを構成してComposerChangeManagerを使用できます。

この項には、次の項が含まれています。

- 第21.11.2.1項「web.xmlファイルのCHANGE_PERSISTENCEコンテキスト・パラメータの更新」

- 第21.11.2.2項「adf-config.xmlファイルへの関連エントリの追加」

21.11.2.1 web.xmlファイルのCHANGE_PERSISTENCEコンテキスト・パラメータの更新

CHANGE_PERSISTENCEコンテキスト・パラメータをComposerChangeManagerに更新する必要があります。

CHANGE_PERSISTENCEパラメータを変更するには:

1. アプリケーションのweb.xmlファイルをApplication_Root\Project_Name\public_html\WEB-INFディレクトリから開きます。

2. org.apache.myfaces.trinidad.CHANGE_PERSISTENCEを探し、これを次のように更新します。

<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>

3. web.xmlファイルを保存します。

21.11.2.2 adf-config.xmlファイルへの関連エントリの追加

アプリケーションのadf-config.xmlファイルのadf-faces-configセクションで変更の永続性を構成する必要があります。

adf-config.xmlファイルの変更の永続性を構成するには:

1. adf-config.xmlファイルを開きます。
adf-config.xmlファイルは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

2. 次のコードを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/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>

こうすることによって、MDSDocumentChangeManagerが使用され、taglib-configセクションにリストされたコンポーネントのタグおよび属性に対する表示モードの変更が永続されます。デフォルトでは、次の表示モードの変更が永続されます。

- Panel Customizableコンポーネント: コンテナ内またはコンテナ間でのコンポーネントの再配置。

- Show Detail Frameコンポーネント: コンポーネントの展開、折りたたみおよびサイズ変更。

このセクションでその他のタグおよび属性を定義してpersist-changes属性をtrueに設定することによって、そのタグおよび属性の変更の永続性を有効にできます。詳細は、第23.4.1項「コンポーネント・レベルでの変更の永続性の定義方法」を参照してください。

3. adf-config.xmlファイルを保存します。

注意:

ComposerChangeManagerを構成すると、FilteredPersistenceChangeManagerが選択するadf-config.xmlに多くのコンポーネントが追加されない場合があるため、そのようなコンポーネントの暗黙的カスタマイズが表示モードで動作しなくなる場合があります。

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

コンポーザで編集されたコンポーネント・プロパティは、現在の言語でのみ使用できます。たとえばタスク・フローをページに追加する場合、コンポーザで入力するタスク・フロー・タイトルは現在の言語でのみ使用可能です。そのため、別のロケールのユーザーには、そのようなプロパティの翻訳された値が表示されません。実行時に編集されたコンポーネント・プロパティの言語サポートを提供するために、現在コンポーザは、文字列値を取ることができるコンポーネント表示オプションのリソース文字列を編集するオプションをユーザーに提供しています。これは、JDeveloperのADF Facesが提供するリソース文字列エディタ機能に似ています。コンポーザでリソース文字列に行われた変更は、アプリケーションで他のリソース・バンドルとともに翻訳される、上書きバンドルに保存されます。翻訳されたものは、アプリケーションにインポートされて戻されます。こうして、ユーザーは自身の言語でプロパティ値を表示できます。

注意:

コンポーザは、実行時に約500のリソース文字列の作成をサポートします。この数を超えると、アプリケーションのパフォーマンスは低下します。

コンポーザ対応ページを含むリリース11.1.1.1のFrameworkアプリケーションは、実行時にリソース文字列の編集をサポートしません。いくつかの簡単な構成を実行することによって、既存のアプリケーションでリソース文字列の編集を有効にできます。この項では、既存のリリース11.1.1.1のアプリケーションでリソース文字列の編集を有効にする手順を説明します。次の項が含まれます:

- 第21.12.1項「リソース文字列エディタの概要」

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

- 第21.12.3項「上書きバンドルの構成方法」

- 第21.12.4項「実行時の処理」

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

実行時、文字列値を取ることができるコンポーネント表示オプションでは、プロパティ・フィールドの隣の「編集」メニューは、「テキスト・リソースの選択」オプションを提供します。このオプションをクリックするとリソース文字列エディタが開き、既存のリソースの検索、リソース・キーの編集または削除および新しいリソース・キー/値のペアの追加を行うオプションが提供されます。実行時のリソース文字列の編集の詳細は、第17.4.5項「リソース文字列の編集」を参照してください。

コンポーザでリソース文字列に対して行った変更は、アプリケーション・オーバーライド・バンドルに保存されます。バンドルは翻訳に送られ、翻訳されたバージョンがアプリケーションに戻されます。こうして、ユーザーは自身の言語でプロパティ値を表示できます。

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値を参照しないようにする必要があります。

21.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値を使用できます。

21.12.3 上書きバンドルの構成方法

アプリケーションでリソース文字列の編集を有効にする場合、アプリケーションを構成して、pageeditor.jarファイルにある上書きバンドルoracle.adf.view.page.editor.resource.ComposerOverrideBundle.xlfを使用する必要があります。この上書きバンドルは、実行時にユーザーがリソース文字列を作成または編集するときにアプリケーションの上書きバンドルからの読取りおよびこれへの書込みに使用されます。

上書きバンドルを構成するには:

1. JDeveloperでアプリケーションを開きます。

2. 「アプリケーション」メニューから「アプリケーションのプロパティ」を選択します。

3. 「アプリケーションのプロパティ」ダイアログの左パネルの「リソース・バンドル」を選択します(図21-11)。

図21-11 「アプリケーションのプロパティ」ダイアログ

「図21-11 「アプリケーションのプロパティ」ダイアログ」の説明

4. 「追加」ボタンをクリックします。

5. 「リソース・バンドルの選択」ダイアログの「ファイル名」フィールドで、図21-12に示すようにoracle.adf.view.page.editor.resource.ComposerOverrideBundle.xlfと入力し、「開く」をクリックします。

図21-12 「リソース・バンドルの選択」ダイアログ

「図21-12 「リソース・バンドルの選択」ダイアログ」の説明

6. 「アプリケーションのプロパティ」ダイアログで、「オーバーライド」チェック・ボックスを選択します。
こうすることによって、実行時にユーザーがファイルを使用できます。

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

この項の手順を繰り返し、アプリケーションの任意のリソース・バンドルを実行時にユーザーに表示します。

注意:

実行時の読取りおよび書込みの操作に関してリソース・バンドルにアクセスできるようにするには、「アプリケーションのプロパティ」ダイアログでそのバンドルの「オーバーライド」オプションを選択している必要があります。

実行時に、プロパティ・バンドル、リスト・リソース・バンドルおよびXLIFFリソース・バンドルにアクセスできるようにすることができます。

21.12.4 実行時の処理

文字列を取るプロパティの隣の「編集」アイコンをユーザーがクリックすると、「テキスト・リソースの選択」オプションが使用可能になります。このオプションをクリックすると、リソース文字列エディタが開き、そこでユーザーはリソース文字列を作成、変更または削除できます。詳細は、第17.4.5項「リソース文字列の編集」を参照してください。

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

この項では、コンポーザの拡張構成の実行時に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

ロギングの構成の詳細は、「コンポーザのADFロギングの構成」を参照してください。

問題

グローバルまたはインスタンス・レベルのCustom Actionを追加しました。ただし、これはchromeまたはShow Detail Frameの「アクション」メニューのいずれにも表示されません。

解決方法

次の点を確認してください。

- Show Detail Frameの最初の子は、af:regionである必要があります。

- タスク・フローに現在表示されているビューは、カスタム・アクションの処理と一致するそのタスク・フロー定義ファイルの結果を含む必要があります。

- この処理に接頭辞dialog:がある場合、タスク・フロー定義の結果にも同じ接頭辞がある必要があります。

詳細は、第21.3.2項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法」を参照してください。

問題

コンポーザがADFアプリケーション・ページで動作しません。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に変更されます。

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

この章では、実行時にページに対して行われた変更を保存するためのカスタマイズ・レイヤーを作成する方法を説明します。コンポーザのサンドボックスの作成を有効にし、変更をバック・エンドに保存する前にプレビューするオプションをユーザーに提供する方法も説明します。次の項が含まれます:

- 第22.1項「MDSの概要」

- 第22.2項「コンポーザのサンドボックスの使用」

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

22.1 MDSの概要

ほとんどの業界では、様々な顧客および分野で役に立つようにエンタープライズ・アプリケーションをカスタマイズします。サイトレベルでアプリケーションを変更すると問題が発生する可能性があります。たとえば、サイトレベルのカスタマイズでアプリケーションをアップグレードすると、データの損失またはデータ・マージ・エラーが発生する場合があります。結果として、すべてのマージ競合を解決するまで新しいバージョンのアプリケーションをデプロイできません。

メタデータ・ドメインでは、MDSにこのような問題に対処するカスタマイズ機能が用意されています。このカスタマイズ機能を使用すると、ベースのアプリケーション定義の上に適用される、元の状態に干渉しないカスタマイズ・レイヤーを作成できます。カスタマイズ・レイヤー(またはレイヤー化された変更)は、独自のドキュメントに記述され、ベースのアプリケーション定義から隔離されて格納されます。実行時、適用可能なカスタマイズは、メタデータ・ストアからロードされ、ベースのメタデータ定義の上にレイヤー化され、目的の効果を実現します。製品のアップグレードおよびパッチは、ベースのメタデータ定義にのみ影響するため、カスタマイズは正しい動作を継続します。

カスタマイズ・レイヤー

MDSでは、クライアントは複数のカスタマイズ・タイプを指定できます。たとえば、カスタマイズを実行時モード、アプリケーション・ロール、ユーザー・ロール、アプリケーションの状態またはクライアント指定の条件に追加できます。このようなカスタマイズ・タイプそれぞれは、カスタマイズ・レイヤーと呼ばれ、CustomizationClassを使用して描写されます。CustomizationClassはインタフェースMDSで、ベース定義でオーバーレイされるカスタマイズ・レイヤーを特定するために使用されます。たとえば、アプリケーションを構成して、ユーザーが属している部門に基づいてカスタマイズを保存できます。DepartmentCCというカスタマイズ・レイヤーを作成でき、そこで異なる部門のユーザーによって行われたアプリケーションのカスタマイズは、レイヤー内の異なるフォルダに格納されます。その他の例は、MDSを構成して表示モードの変更をユーザー・カスタマイズとしてあるレイヤーで保存し、編集モードの変更をアプリケーション・カスタマイズとして別のレイヤーで保存する場合(またはこの逆)です。

カスタマイズ・レイヤーは、優先順位の順番で適用されます。つまり、同じ変更が、指定のユーザーおよびセッションに適用される2つの異なるレイヤーで行われた場合、高い優先順位のレイヤーで定義された変更がまず適用されます。

CustomizationClassを実装する場合、これをMDSで登録する必要があります。MDSには、CustomizationClassタイプのリストを単一のMetadataObjectと関連付ける方法が用意されています。これは、ファイングレイン関連付けと呼ばれます。MDSには、CustomizationClassタイプのリストを一連のMetadataObjectsと関連付ける方法も用意されています。これは粗密な関連付けと呼ばれます。CustomizationClassおよびカスタマイズ・レイヤーの作成の詳細は、第22.3項「カスタマイズ・レイヤーの表示モードおよび編集モードへの追加: 例」を参照してください。

コンポーザのサンドボックス

通常、Frameworkアプリケーションでは、実行時カスタマイズはJDEV_HOME/jdev/system_directory/o.mds.dt/adrs/application_name/AutoGeneratedMar/mds_adrs_writedirディレクトリにすぐに保存されます。表示モードと編集モードの両方で行われた変更はこの方法で保存されます。ただし、特定の状況では、ユーザーは、変更をバック・エンドに実際に保存する前に、まず独自のビューでカスタマイズを適用してその変更を保持するか取り消すかを評価する必要がある場合があります。データベース・リポジトリを使用してカスタマイズを格納する場合、コンポーザを構成してサンドボックスを作成できます。サンドボックスの作成の詳細は、第22.2項「コンポーザのサンドボックスの使用」を参照してください。

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

サンドボックスは、実行時のページ・カスタマイズをバック・エンドにコミットするまで保存する一時ストレージ・レイヤーです。サンドボックスを構成すると、コンポーザのツールバーに「保存」ボタンが表示され、ユーザーは変更を保存できます。サンドボックス対応のアプリケーションでは、ユーザーがまず変更を保存せずに「閉じる」をクリックすると、「クローズの確認」ダイアログによって、コンポーザを閉じる前に変更を保存するか、取り消すかの確認を求められます。

表示モードで行われたユーザー・カスタマイズはすぐに保存されます。このような変更はページを変更したユーザーに対してのみ使用可能であるため、保存する前に変更を確認する特定の値はありません。

編集モードのカスタマイズはページにアクセスするすべてのユーザーが使用できるため、サンドボックスを有効にして、変更をコミットする前にユーザーがページ・カスタマイズを確認し、これを評価できます。アプリケーションでサンドボックスを有効にした場合、ページの「設計」ビューと「ソース」ビューの両方のコンポーザのツールバーに「保存」ボタンが表示されます。

この項では、サンドボックスの作成を有効にする手順およびサンドボックス対応アプリケーションの実行時の動作を説明します。次のサブセクションが含まれます:

- 第22.2.1項「コンポーザのサンドボックスの作成を有効にする方法」

- 第22.2.2項「実行時の処理」

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

- 第22.2.4項「失効したサンドボックスを破棄する方法」

- 第22.2.5項「アプリケーションのサンドボックスの作成を有効にする方法」

- 第22.2.6項「アプリケーションのサンドボックスの作成を有効にした場合の処理」

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

アプリケーションがデータベース・ストアを使用している場合のみサンドボックスを有効にできます。したがって、この項の手順を実行する前にデータベース・ストアが構成されていることを確認する必要があります。データベース・ストアの設定の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』を参照してください。

この項では、コンポーザのサンドボックスの作成を有効にする方法を説明します。次のサブセクションが含まれます:

- 第22.2.1.1項「アプリケーションのadf-config.xmlファイルの更新」

- 第22.2.1.2項「アプリケーションのweb.xmlファイルの更新」

- 第22.2.1.3項「アプリケーションのデータベース・ストアの選択」

- 第22.2.1.4項「実行時のフル・ページ・リフレッシュの有効化」

22.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. <metadata-namespaces>要素の下で、例22-1に示すように、<namespace>要素が、サンドボックスの作成を有効にするすべてのメタデータに対して定義されていることを確認します。

例22-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. <pe:page-editor-config>セクション内に<pe:sandbox-namespaces>要素を追加し、例22-2に示すように、サンドボックスの作成を有効にするすべてのネームスペースに対して個々の<pe:namespace>タグを追加します。

例22-2 サンドボックスの作成のためのネームスペースの構成

<pe:sandbox-namespaces>
<pe:namespace path="/pages"/>
<pe:namespace path="/pageDefs"/>
</pe:sandbox-namespaces>

4. adf-config.xmlファイルを保存します。

22.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. 例22-3に示すように、AdfBindingFilterのフィルタ・マッピングの前に対応する<filter-mapping>要素を追加します。

例22-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ファイルを保存します。

22.2.1.3 アプリケーションのデータベース・ストアの選択

サンドボックスの作成を有効にするには、アプリケーションを構成しデータベース・ストアを使用する必要があります。したがって、アプリケーションをWebLogic管理対象サーバーにデプロイするときに、データベース・リポジトリを選択し、そのアプリケーションのパーティション名を指定します。

JDeveloperからWebLogic管理対象サーバーへのアプリケーションのデプロイの詳細は、第69.3.4.1項「ローカル・データ・ソースを使用した管理対象サーバーへのデプロイ」を参照してください。

22.2.1.4 実行時のフル・ページ・リフレッシュの有効化

アプリケーションでサンドボックスの作成を有効にするとき、ページ編集モードに入るときとそのモードを終了するときにフル・ページ・リフレッシュが実行されるようにする必要があります。その実行手順の詳細は第22.3.7項「サーブレットをリダイレクトしてMDSカスタマイズ・レイヤー間の切替えを有効にする方法」を参照してください。

22.2.2 実行時の処理

ユーザーがページ編集モードに切り替えるとき、コンポーザのツールバーに「保存」ボタンが表示されるということは、サンドボックスの作成がアプリケーションで有効であることを示します。ページまたはページの共有コンポーネントに対して行われた変更は、ユーザーが「保存」をクリックするまで保存されません。保存されると、すべてのアプリケーション・ユーザーがこのカスタマイズを使用できます。「保存」ボタンがレンダリングされない場合、サンドボックスを使用できず、各変更はすぐにコミットされます。

「コンポーネント・プロパティ」ダイアログでコンポーネント・プロパティを編集するとき、「適用」をクリックすると次のようになります。

- サンドボックスを使用できない場合、ページがリフレッシュされてコンポーネント・プロパティに対して行われた変更が表示され、変更はバック・エンドに保存されます。

- サンドボックスを使用できる場合、ページがリフレッシュされてコンポーネント・プロパティに対して行われた変更が表示されます。変更を保存するには、ユーザーは「保存」をクリックする必要があります。

ページで「保存」または「閉じる」をクリックすると、次のイベントが実行されます。

- 「保存」をクリックすると、サンドボックスがコミットされ、新しいサンドボックスが作成されます。ページは編集モードのままです。

- 「閉じる」をクリックすると、次の2つのイベントのいずれかが発生します。

- 最後の保存操作以降の変更がない場合、サンドボックスが破棄され、コンポーザが閉じ、ユーザーは表示モードに戻ります。

- 未保存の変更がある場合は、図22-1に示すように、「クローズの確認」ダイアログにページ名と未保存のタスク・フロー名がリストされます。

図22-1 コンポーザの「クローズの確認」ダイアログ

「図22-1 コンポーザの「クローズの確認」ダイアログ」の説明

ユーザーは、次のオプションから選択できます。

- 「保存」をクリックして、サンドボックスをコミットし、コンポーザを閉じます。

- 「保存しない」をクリックして、サンドボックスを破棄し、コンポーザを閉じます。

- 「取消」をクリックし、ダイアログを閉じ、変更を保存せずにコンポーザに戻ります。

注意:

ユーザーがページを編集中にページ外にナビゲートし、そのページに戻った場合、保存されていない変更は失われます。

並行編集時の処理

複数のユーザーが同じカスタマイズ・レイヤーを使用して同じページまたはタスク・フローを編集している場合、図22-2に示すように、ページに別のユーザーがページまたはタスク・フローを編集しているというメッセージが各ユーザーに表示されます。

図22-2 ページ並行処理メッセージ

「図22-2 ページ並行処理メッセージ」の説明

複数のユーザーが同じカスタマイズ・レイヤーで同時にタスク・フローにズームインし、それを編集している場合、図22-3に示すように、並行処理メッセージが表示されます。

図22-3 タスク・フローの並行処理メッセージ

「図22-3 タスク・フローの並行処理メッセージ」の説明

注意:

ユーザーがタスク・フローにズームインし、いくつかのカスタマイズを行い、タスク・フローからズームアウトした場合、そのユーザーがカスタマイズを保存するまで、タスク・フローの並行処理メッセージが他のユーザーに対して継続して表示されます。

最後に保存された変更は前の変更を上書きします。たとえば、ユーザーAとBがページまたはタスク・フローを同時に編集している場合、並行性の問題は次のように処理されます。

- Aが最初にページまたはタスク・フローを保存すると、Aの変更がMDSにコミットされます。その後、Bがページまたはタスク・フローを保存すると、Aの変更はBの変更で上書きされます。

- Bが表示モードでコンポーネントをパーソナライズ(たとえば移動)しようとしている間にAがその同じコンポーネントを削除すると、WebCenterのエラー・ページがBに表示されます。Bは、元のページにナビゲートして戻る必要があります。削除されたコンポーネントは表示されず、Bは他のコンポーネントで作業を継続できます。

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

変更がすぐにバック・エンドにコミットされるようにするために、サンドボックスを無効にできます。

サンドボックスを無効にするには:

1. adf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

2. <pe:page-editor-config>要素の下に<pe:disable-sandbox>属性を追加し、これをtrueに設定します。

3. adf-config.xmlを保存します。

22.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の更新」を参照してください。

22.2.5 アプリケーションのサンドボックスの作成を有効にする方法

ページの上部にバナーを、左にページを管理するオプションを備えたサイドバーを、ブラウザ・ウィンドウの中央にページを表示するアプリケーションを作成した例を考えてみます。ユーザーがコンポーザでページを編集し、他のメカニズム(XMLファイルの更新など)を使用してサイドバーを編集できるようにする必要があるとします。このような場合にコンポーザのサンドボックスを有効にしても、ページ・コンテンツの変更のみが保存され、サイドバーの変更は保存されません。アプリケーションのサンドボックスを有効にした場合、実行時に行われたすべての変更が一度に1つの場所に保存されます。アプリケーション・レベルでサンドボックスの作成を有効にすると、コンポーザは、ページ編集モードを起動したときに独自のサンドボックスを作成しません。かわりに、アプリケーションのサンドボックスが使用されます。つまり、アプリケーションが提供するユーザー・インタフェースは、サンドボックスのコミットおよび破棄に使用されます。アプリケーションがコンポーザのサンドボックスを提供できるようにするには、まず一連の構成を実行する必要があります。

アプリケーションのサンドボックスを有効にするために便利な別の例は、ユーザーがページ・コンテンツを編集するが、管理人の承認時のみページが保存されるようにする場合です。アプリケーションのサンドボックスを使用して、ユーザーが行った変更は、管理人が変更を承認するまでサンドボックスに留まります。ページは承認時に保存されます。

コンポーザでアプリケーション・サンドボックスの使用を可能にするには:

1. ComposerSessionOptionsFactoryクラスを実装して、各リクエストにMDSSessionOptionsを提供します。
このタスクの実行の詳細は、第22.3.4項「ComposerSessionOptionsFactoryクラスの実装方法」を参照してください。

2. コンポーザで実装を登録します。
このタスクの実行の詳細は、第22.3.5項「コンポーザでの実装の登録方法」を参照してください。

3. WebCenterComposerFilterを構成します。
このタスクの実行の詳細は、第22.3.6項「WebCenterComposerFilterの構成方法」を参照してください。

22.2.6 アプリケーションのサンドボックスの作成を有効にした場合の処理

実行時、アプリケーションで定義されたユーザー・インタフェースを使用すると、ユーザーは、変更をバック・エンドに保存したり、変更を保存せずにコンポーザを閉じたりできます。この場合、カスタマイズが取り消された場合やバック・エンドにコミットされた場合には、コンポーザはこれを制御できません。

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

カスタマイズをクライアント定義の条件に基づいてメタデータ・オブジェクトに適用できます。たとえば、エンド・ユーザーの権限、アプリケーションのデプロイ場所(ローカライゼーションとも呼ばれる)または特定の産業分野に基づいて使用するアプリケーションおよびメタデータ・オブジェクトをカスタマイズできます。このような各カテゴリ(権限、ローカライゼーションおよび分野)は、カスタマイズ・レイヤーを指し、それぞれがCustomizationClassを使用して描写されます。CustomizationClassはインタフェースMDSで、ベース定義でオーバーレイされるカスタマイズ・レイヤーを特定するために使用されます。例については、第22.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カスタマイズ・レイヤー間で切り替える例を提供します。次のサブセクションが含まれます:

- 第22.3.1項「JSFページへのコンポーザの追加方法」

- 第22.3.2項「カスタムSiteCCヒント・レイヤーの作成方法」

- 第22.3.3項「カスタムUserCCヒント・レイヤーの作成方法」

- 第22.3.4項「ComposerSessionOptionsFactoryクラスの実装方法」

- 第22.3.5項「コンポーザでの実装の登録方法」

- 第22.3.6項「WebCenterComposerFilterの構成方法」

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

- 第22.3.8項「実行時の処理」

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

この項では、JSFページにPage Customizableコンポーネントを追加する方法を説明します。こうすることによって、実行時にコンポーザを編集モードで使用でき、adminユーザーはサイトレベルでカスタマイズを実行できます。

注意:

この項では、Change Mode Linkをページに追加し、実行時に表示モードから編集モードに切り替えることができるようになります。commandLinkまたはcommandButtonを使用して、そのactionListenerのModeContext.getCurrent().setEditMode()をコールすることにより、編集モードに切り替えることもできます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスlを参照してください。

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ヒント・レイヤーを実装できません。

22.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. getCacheHint、getNameおよびgetValueのメソッドを実装するには、左上隅の電球をダブルクリックして「メソッドの実装」を選択します。

7. 「メソッドの実装」ダイアログで、「OK」をクリックします。

8. 「ソース」ビューで、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;

9. ここで太字で示したようにコードを更新します。

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 };
}
}

10. SiteCC.javaファイルを保存します。

22.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. getCacheHint、getNameおよびgetValueのメソッドを実装するには、左上隅の電球をダブルクリックして「メソッドの実装」を選択します。

7. 「メソッドの実装」ダイアログで、「OK」をクリックします。

8. 「ソース」ビューで、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;

9. ここで太字で示したようにコードを更新します。

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};
}
}

10. UserCC.javaファイルを保存します。

22.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() };

}

22.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>

22.3.6 WebCenterComposerFilterの構成方法

アプリケーション・ディレクトリのPortal/public_html/WEB-INFフォルダにあるweb.xmlファイルのWebCenterComposerFilterフィルタを構成する必要があります。このフィルタは、すべてのHTTPリクエストについてコンポーザの具体的なSessionOptionsFactoryをADFに登録します。フィルタがADFからコールを受信すると、リクエストをアプリケーションに転送し、新しくカスタマイズされたレイヤーでSessionOptionsを取得します。SessionOptionsでSandboxまたはVersionContextを設定していない場合、コンポーザはその独自のサンドボックスを設定し、それをADFに返します。サンドボックスの詳細は、第22.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の更新」を参照してください。

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

サーブレットをリダイレクトする、つまり実行時にフル・ページをリフレッシュするには、次のものを作成する必要があります。

- AppNavigationUtils.redirectToSamePage()メソッドをコールするAppNavigationUtilsクラス

- AppNavigationUtilsクラスを使用するAppCloseHandler CloseListener

- 編集モードを表示するAppModeBean

この項では、これらのオブジェクトの作成方法を説明します。次のサブセクションが含まれます:

- 第22.3.7.1項「AppNavigationUtilsクラスの作成方法」

- 第22.3.7.2項「AppCloseHandlerの作成方法」

- 第22.3.7.3項「AppCloseHandlerの登録方法」

- 第22.3.7.4項「AppModeBeanの作成方法」

22.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. 次のコードを追加します。編集時にサンドボックスまたはカスタマイズ・レイヤーの変更を使用する場合は、AppNavigationUtils. redirectToSamePage()を含める必要があります。

public class AppNavigationUtils
{
public static void redirectToSamePage()
{
FacesContext facesContext = FacesContext.getCurrentInstance();
Object reqObject = facesContext.getExternalContext().getRequest();
if (reqObject instanceof HttpServletRequest)      {
HttpServletRequest httpReqObject = (HttpServletRequest) reqObject;
String url = httpReqObject.getRequestURI();
if (httpReqObject.getQueryString() != null)
url = url + "?" + httpReqObject.getQueryString();
String escapedUrl = url.replaceAll("<", "&lt;");
facesContext.getExternalContext().redirect(escapedUrl);
}
}
}

22.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();
}
}

22.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. ファイルを保存します。

イベント・ハンドラの詳細は、第20.6項「コンポーザUIイベントのイベント・ハンドラの構成」を参照してください。

22.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();
}
}

22.3.8 実行時の処理

siteカスタマイズ・レイヤーの機能を確認するには、まずブラウザでJSFページを実行します。次に、ページにadminとしてログインし、「編集」リンクをクリックして編集モードに切り替えます。実行時、ページをカスタマイズします。たとえば、Webページ、移動可能ボックスまたはイメージをページにドロップします。ページは図22-4のようになります。

図22-4 カスタマイズされたページ

「図22-4 カスタマイズされたページ」の説明

アプリケーション・ディレクトリの/mds/mdssys/cust/site/webcenterに移動し、pagename.jspx.xmlファイルを開きます。これは、ページに対して実行したサイトレベルのカスタマイズ(アプリケーションのカスタマイズ)が格納される場所です。

userカスタマイズ・レイヤーを使用するには、ページにscottとしてログインし、表示モードでページをパーソナライズします。次にアプリケーション・ディレクトリの/mds/mdssys/cust/user/scottに移動し、pagename.jspx.xmlファイルを開きます。これは、ページに対して実行したユーザーレベルのカスタマイズが格納される場所です。

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

この項では、コンポーザの使用中に発生する可能性のあるMDS関連の問題のトラブルシューティングに役立つ情報を提供します。

ロギングの構成の詳細は、「コンポーザのADFロギングの構成」を参照してください。

問題

アプリケーションはMDSサンドボックスを使用するように構成されています。アプリケーションを実行すると、サンドボックスは動作せず、また例外も生成しません。

解決方法

次の点を確認してください。

- データベース・リポジトリが使用されています。サンドボックスは、データベース・ベースのリポジトリでのみ動作し、ファイルベースのリポジトリでは動作しません。

- web.xmlのフィルタの順序が正確です。サンドボックスが正しく動作するためには、<filter>エントリが正しい順序である必要があります。

詳細は、第22.2項「コンポーザのサンドボックスの使用」を参照してください。

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

ビジネス要件に合せてデフォルトのセキュリティ定義を様々なレベルで上書きできます。コンポーザ・コンポーネントのデフォルトのセキュリティ動作の詳細は、第17.7項「セキュリティおよびコンポーザ」を参照してください。

この章では、コンポーザ・コンポーネントのデフォルトのセキュリティ動作を上書きする方法について説明します。次のサブセクションが含まれます:

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

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

- 第23.3項「customizationAllowed属性を使用したタグ・レベルのセキュリティの適用」

- 第23.4項「属性レベルのセキュリティの適用」

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

- 第23.6項「タスク・フローのセキュリティの実装」

- 第23.7項「コンポーザのデフォルト・セキュリティ・ポリシーの上書き」

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

デフォルトで、MDSはページ・コンポーネントのアプリケーション・カスタマイズを制限します。つまり、ユーザーは実行時にコンポーネントまたはその属性をカスタマイズできません。アプリケーション・カスタマイズを有効にするには、コンポーネントおよびその属性のデフォルト制限を解除する必要があります。Page Customizableコンポーネントをページに追加し、それにコンテンツを移入する場合、Page Customizableおよびそのすべての子コンポーネントのデフォルトのカスタマイズ制限が解除されます。ただし、Page Customizableコンポーネントがテンプレートの一部である場合などのインスタンスによっては、コンポーネントおよびその属性のアプリケーション・カスタマイズを明示的に許可する必要がある場合があります。この項では、コンポーネントおよびその属性にMDSのタイプ・レベルの制限またはインスタンス・レベルの制限を適用する方法について説明します。次のサブセクションが含まれます:

- 第23.1.1項「タイプ・レベルのカスタマイズ・ポリシーの定義方法」

- 第23.1.2項「インスタンス・レベルのカスタマイズ・ポリシーの定義方法」

注意:

ページ・テンプレートを使用したカスタマイズ可能ページの作成の詳細は、第19.1.7項「カスタマイズ可能ページを作成するページ・テンプレートの作成方法」を参照してください。

23.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セッションのカスタマイズ・ポリシーに含める必要があります。詳細は、第23.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インスタンスが検索され、スタンドアロン・ファイルで指定されたすべてのカスタマイズ制限がロードされます。

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

インスタンス・レベルの制限は、コンポーネントの特定インスタンスのカスタマイズを許可または制限する場合に便利です。インスタンス・レベルのカスタマイズ・ポリシーのコードは、タイプ・レベルのポリシー定義で使用されるコードと似ています。ただし、インスタンス・レベルのポリシーは、タイプ・レベルのポリシーを上書きします。つまり、インスタンス・レベルの制限では、タイプからの制限に関係なく、trueが保持されます。たとえば、ログイン・ページ、およびユーザー・プリファレンス・ページなどの他のページで、いくつかのUI要素があるフォームを使用している場合は、ユーザーに、ログイン・ページ上以外のフォームのすべてのインスタンスをカスタマイズすることを許可できます。このためには、タイプ・レベルでフォームのカスタマイズを許可して、ログイン・ページ内のインスタンスにのみカスタマイズを制限できます。

コンポーネントまたはその属性のカスタマイズをインスタンス・レベルで可能にできます。コンポーネント・レベルでカスタマイズ制限を適用するには、JDeveloperで、コンポーネントのcustomizationAllowedおよびcustomizationAllowedBy属性を設定できます(第23.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>

実行時に、これらのポリシーが読み取られ、それに応じてアーチファクトのカスタマイズも可能になります。

23.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コンポーネントによってのみネイティブで受け入れられます。

この項には次のサブセクションが含まれます:

- 第23.2.1項「ADFセキュリティの構成方法」

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

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

- 第23.2.4項「コンポーザでの実装の登録方法」

- 第23.2.5項「WebCenterComposerFilterの構成方法」

- 第23.2.6項「インスタンス・レベルのカスタマイズ制限の適用方法」

- 第23.2.7項「実行時の処理」

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

インスタンス・レベルのカスタマイズ制限を適用する前に、ADFセキュリティを使用してアプリケーションを保護する必要があります。詳細は、第68.3項「ADFセキュリティの構成」を参照してください。

23.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. エディタの下部の「ユーザーとロール」タブをクリックし、図23-1に示すように、ファイルの「ユーザー」セクションを開きます。

図23-1 jazn-data.xmlファイル

「図23-1 jazn-data.xmlファイル」の説明

3. 「アプリケーション・ロール」タブをクリックします。

4. 「アプリケーション・ロール」ページで、図23-2に示すように、ロール表の「新規アプリケーション・ロール」アイコンをクリックします。

図23-2 jazn-data.xmlファイルの「ロール」セクション

「図23-2 jazn-data.xmlファイルの「ロール」セクション」の説明

5. 「名前」フィールドで、ユーザー名adminを指定します。

6. オプションで、「表示名」フィールドおよび「説明」フィールドで、新しいロールのための表示名および説明を指定します。

7. 手順3から6を繰り返し、別のロールcustomerを追加します。

8. 「ユーザー」タブをクリックします。

9. 「ユーザー」ページでは、図23-3で示すように、「新規ユーザー」アイコンをクリックして資格証明を指定することで新規ユーザーを作成し、「割当て済ロール」表内の「ロールの割当て」アイコンをクリックして「アプリケーション・ロールの割当て」を選択することでこれらのユーザーにロールを割り当てます。

図23-3 jazn-data.xmlファイル内の「ユーザー」セクション

「図23-3 jazn-data.xmlファイル内の「ユーザー」セクション」の説明

10. ページ下部の「ADFポリシー」タブをクリックします。

11. ページ上の「Webページ」タブを選択します。

12. ページ定義のリストから、図23-4に示すように、権限を付与するページを選択します。

図23-4 jazn-data.xmlファイルのページ定義

「図23-4 jazn-data.xmlファイルのページ定義」の説明

13. 「ロールに付与済」列で、「アプリケーション・ロールの追加」アイコンをクリックします。

14. 「ロールの選択」ダイアログで(図23-5)、adminロールおよびcustomerロールを選択し、「OK」をクリックします。

図23-5 「ロールの選択」ダイアログ

「図23-5 「ロールの選択」ダイアログ」の説明

15. 各ロールを選択し、図23-6で示すように、すべての権限(表示、カスタマイズ、編集、付与、パーソナライズ)を付与します。

図23-6 jazn-data.xmlファイル内の権限リスト

「図23-6 jazn-data.xmlファイル内の権限リスト」の説明

ユーザーおよびロールの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のFusion WebアプリケーションでのADFセキュリティの有効化に関する項を参照してください。

23.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」をクリックします。
「Javaクラスの作成」ダイアログが開きます。

3. 「名前」フィールドに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() };
}

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

第22.3.5項「コンポーザでの実装の登録方法」で説明した手順を実行して、ComposerSessionOptionsFactoryクラスの実装を登録します。ここで、ユーザー・ロールはMDSセッションのカスタマイズ・ポリシーに含まれました。

23.2.5 WebCenterComposerFilterの構成方法

WebCenterComposerFilterを構成するには、第22.3.6項「WebCenterComposerFilterの構成方法」で説明した手順を実行します。

23.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>

「設計」ビューは、図23-7のようになります。

図23-7 「設計」ビュー: 「許可されているカスタマイズ」

「図23-7 「設計」ビュー: 「許可されているカスタマイズ」」の説明

4. Panel Customizable内にShow Detail Frameコンポーネントを追加し、別のPanel CustomizableコンポーネントをShow Detail Frameコンポーネントの子として含めます。

注意:

この手順は、複数のコンポーネントを示すことによって実行時の動作をより説明しやすいよう、説明のためのみにあります。コンポーザ・コンポーネントの追加方法の詳細は、第5.3項「ポータルへのページの追加」を参照してください。

23.2.7 実行時の処理

実行時の処理は、ログオンしているユーザーによって異なります。違いを確認するには、あるユーザーとしてログインしてから別のユーザーとしてログインしてください。例:

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

adminロールを有するユーザーとしてページにログインし、編集モードに切り替えます。Panel Customizableコンポーネントの内と外に、「コンテンツの追加」ボタンおよび「編集」アイコンが表示されます。図23-8で示すように、adminロールを有するユーザーとして、「ソース」ビューに切り替えてPanel Customizable外のプロパティにアクセスできます。つまり、adminロールを有するユーザーは、このコンポーネントを編集できます。

図23-8 admin用の編集モード

「図23-8 admin用の編集モード」の説明

customerロールを有するユーザーとしてページにログインし、編集モードに切り替えます。Panel Customizable外では、「コンテンツの追加」ボタンおよび「編集」アイコンは使用できません。つまり、このコンポーネントは、customerロールを有するユーザーには編集できません。図23-9で示すように、「ソース」ビューでは、「コンテンツの追加」および「編集」アイコンはコンポーネントに対してグレー表示されます。

図23-9 「ページ・ソース」ビューでの制限されたコンポーネント

「図23-9 「ページ・ソース」ビューでの制限されたコンポーネント」の説明

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

デフォルトでは、Page Customizableコンポーネントは、その下にあるすべてのコンポーネントのアプリケーション・カスタマイズを有効にします。これを、いくつかのコンポーネントに対してカスタマイズを制限するように変更できます。Page Customizableコンポーネントは、ネストされたページまたはフラグメント上にあるコンポーネントに対してカスタマイズを有効にしません。このようなコンポーネントに対して手動でカスタマイズを有効にする必要があります。このような要件に対処するために、MDSは、customizationAllowed属性およびcustomizationAllowedBy属性を提供しています。これらの属性は、ページ上の特定コンポーネントに対するカスタマイズの有効化または制限に使用できます。

customizationAllowed属性は、コンポーネントを実行時にカスタマイズできるかどうかを制御します。この属性をfalseに設定する場合は、コンポーネントを実行時にカスタマイズできません。つまり、「コンポーネント・プロパティ」ダイアログでは、プロパティはグレー表示され、編集は許可されません。

customizationAllowedBy属性は、カスタマイズを可能にするロールを指定します。

この項では、コンポーネントに対してカスタマイズを有効化および制限する例を提供します。次のサブセクションが含まれます:

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

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

詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の拡張メタデータ・プロパティに関する項を参照してください。

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

イメージ・コンポーネントに対してアプリケーション・カスタマイズを有効化するには:

1. 第19.2項「コンポーザ・コンポーネントを使用した編集可能ページの設計: 例」で作成したMyPage.jspxページで、ADF Faces Imageコンポーネント、たとえば、panelCustomizable1というPanel Customizable内のbrandingImage.gifを追加します。
アプリケーション・カスタマイズは、Imageコンポーネントに対して自動的に有効になります(Page Customizableコンポーネント内にネストされているため)。

2. MyPage.jspxを実行します。

3. ページの編集モードに切り替えます。

4. 「表示」メニューから「ソース」を選択して、ページの「ソース」ビューに切り替えます。

5. 「ソース・ビュー」パネル内のコンポーネント階層でイメージを選択し、「イメージのプロパティの表示」アイコンをクリックします。
「コンポーネント・プロパティ」ダイアログにイメージ・プロパティが表示されます。このダイアログで、使用可能なプロパティを編集できます。プロパティを編集して、「OK」をクリックします。プロパティの編集可能値は、アプリケーション・カスタマイズがコンポーネントに対して有効になっていることを表します。

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

イメージ・コンポーネントに対してcustomizationAllowed属性をfalseに設定することで、ページ上のイメージのカスタマイズを制限できます。

イメージ・コンポーネントに対してカスタマイズを制限するには:

1. Oracle JDeveloperで、前の項で追加したImageコンポーネントを選択し、プロパティ・インスペクタで、customizationAllowedの値をfalseに設定します。

2. MyPage.jspxを実行します。

3. ページの編集モードに切り替えます。

4. 「表示」メニューから「ソース」を選択して、ページの「ソース」ビューに切り替えます。

5. 「ソース・ビュー」パネル内のコンポーネント階層でイメージを選択し、「イメージのプロパティの表示」アイコンをクリックします。
「コンポーネント・プロパティ」ダイアログで、プロパティがグレー表示され、編集はできなくなります。

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

特定のコンポーネント属性を実行時にカスタマイズできるかどうかを選択できます。また、属性に行われた変更がMDSなどの永続ストアまで持続する必要があるかどうかを指定できます。次の方法で、属性レベルのセキュリティを適用できます。

- プロパティ・フィルタを定義することによる

- コンポーネント・レベルで変更を持続させることによる

プロパティ・フィルタの適用の詳細は、第20.8.1項「プロパティ・フィルタの定義方法」を参照してください。

この項では、コンポーネント・レベルで変更を持続させる方法を説明します。次のサブセクションが含まれます:

- 第23.4.1項「コンポーネント・レベルでの変更の永続性の定義方法」

- 第23.4.2項「実行時の処理」

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

アプリケーションが、変更を持続させるためにFilteredPersistenceChangeManagerを使用して構成されている場合は、adf-config.xmlファイル内のpersist-changes属性を使用して、特定の属性への変更を持続させる必要があるかどうかを指定できます。

注意:

変更の永続性の詳細は、第21.11項「永続性変更マネージャの構成」を参照してください。

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

例23-1は、一部の属性に対して定義されたpersist-changes属性を持つadf-config.xmlのサンプルを示しています。

例23-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>

23.4.2 実行時の処理

persist-changes属性を含み、値をtrueに設定する場合、コンポーネント属性に対して行われた変更は、そのコンポーネントのいずれのインスタンスでも維持されます。

注意:

persist-changes属性は、表示モードで行われた暗黙的カスタマイズにのみ適用されます。

23.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コンポーネント・アクションに対してアクション・レベルの制限を適用する方法を説明します。次のサブセクションが含まれます:

- 第23.5.1項「adf-config.xmlへのenableSecurityセクションの追加方法」

- 第23.5.2項「アクション・カテゴリ・レベルでのセキュリティの定義」

- 第23.5.3項「アクション・レベルでのセキュリティの定義」

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

enableSecurity要素は、デフォルトではadf-config.xml内で使用できません。Panel CustomizableおよびShow Detail Frameコンポーネントに対するページ・レベルのセキュリティの継承をオーバーライドまたは拡張するには、例23-2に示すように、adf-config.xmlファイルのcustomizableComponentsSecurityセクションを追加し、そのセクションのenableSecurity要素をtrueに設定する必要があります。

例23-2 adf-config.xmlのカスタマイズ可能コンポーネント・セキュリティ・セクション内のenableSecurity要素

<cust:customizableComponentsSecurity
xmlns="http://xmlns.oracle.com/adf/faces/customizable/config">
<cust:enableSecurity value="true"/>
<cust:actionsCategory>
..........................................
</cust:customizableComponentsSecurity>

アクションに対する制限は、次のレベルで実装できます。

- ページ・レベル: 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の値以外に権限チェックが行われることを示します。

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

adf-config.xmlファイルのカスタマイズ可能コンポーネント・アクション・セキュリティ・セクションにactionsCategory要素を追加して、複数のPanel CustomizableおよびShow Detail Frameコンポーネント・アクションに対するセキュリティを定義できます。有効化したactionsCategory属性に基づいて、コンポーネントに適切な権限が設定されます。

adf-config.xmlファイルのactionsおよびactionsCategory要素には、特定のデフォルト・マッピングがあります。表23-1に、様々なactionsCategory属性およびデフォルトでサポートされるアクションを示します。

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。

表23-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設定は、ページへのコンテンツの追加およびページ上のコンテンツの移動または再配置の機能を制御します。詳細は、第23.5.3項「アクション・レベルでのセキュリティの定義」を参照してください。

- personalizeActionsCategoryおよびcustomizeActionsCategoryの両方がtrueに設定される場合、ユーザーは、Show Detail Frameコンポーネントを移動、展開、折りたたみ、削除、サイズ変更および編集でき、Panel Customizableコンポーネントを編集および削除することや、それらにコンテンツを追加することもできます。ユーザーは、「コンテンツの追加」ボタンを使用してリソース・カタログからコンテンツを追加することや、「ボックスの追加」アイコンを使用してBoxコンポーネントを追加することや、ドラッグ・アンド・ドロップすることで他のPanel Customizableコンポーネントからコンポーネントを移動できます。

注意:

権限が付与からカスタマイズ、パーソナライズ、表示の順にカスケードするため、personalizeActionsCategoryをfalseに設定し、customizeActionsCategoryをtrueに設定することはお薦めできません。つまりカスタマイズを有効にする場合は、ユーザーにすでにページに対するパーソナライズ権限がある必要があります。

例23-3に、adf-config.xmlファイルのカスタマイズ可能コンポーネント・アクション・セキュリティ・セクションに追加できるactionsCategoryエントリを示します。

例23-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>

例23-4に示すように、これらの要素の値にはELも使用できます。

例23-4 actionCategoryエントリ内のカスタマイズ可能コンポーネントで使用されるEL

<cust:actionsCategory>
<cust:actionCategory name="personalizeActionsCategory" value="#{appBusinessRules.InsideCorpNetwork}"/>
</cust:actionsCategory>

参照用に、マネージドBeanappBusinessRulesは、第68.15項「ポートレットおよびカスタマイズ可能コンポーネントの継承されたセキュリティのオーバーライド」の例68-5で示すように定義されます。

23.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コンポーネントをドラッグ・アンド・ドロップします。

表23-2では、allowActionおよびshowAddContentAction設定によってコンテンツを追加する機能を説明します。

表23-2 ページへのコンテンツの追加のためのアクション設定

allowAction設定

showAddContentAction設定

「コンテンツの追加」ボタンが表示されているかどうか

true

true

はい

true

false

いいえ

false

true

いいえ

false

false

いいえ

表23-3では、allowAction設定およびshowSplitAction設定に応じて「ボックスの追加」アイコンを使用してコンテンツを追加する機能を説明します。

表23-3 ページでのコンテンツの再配置のためのアクション設定

allowAction設定

showSplitAction設定

「ボックスの追加」アイコンが表示されているかどうか

true

true

はい

true

false

いいえ

false

true

いいえ

false

false

いいえ

表23-4では、allowActionおよびshowMoveAction設定によってページにコンテンツを移動する機能を説明します。

表23-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に設定する場合、ユーザーはページの「設計」ビューでこのようなコンポーネントを編集または削除できません。ただし、ユーザーは「ソース」ビューでこのようなコンポーネントを選択して、それらを編集または削除できます。

例23-5に、adf-config.xmlファイルのカスタマイズ可能コンポーネント・アクション・セクションに追加できるactionsエントリを示しています。要素値にはELを使用できます。

例23-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>

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

タスク・フロー編集権限は、タスク・フローを編集する体験に非常に大きな影響を与えるため、タスク・フローに対する編集権限はデフォルトでは無効になっています。実際に、デフォルトでは、タスク・フローに対して権限は与えられていません。適切な権限を有するユーザーのみがタスク・フローを編集できることを確実にするには、コンポーザ・コンテキストで次の2つのタスクを実行することで、タスク・フローのセキュリティを実装できます。

- タスク・フローに明示的に編集、カスタマイズまたは付与権限を与えます。

- コンポーザにタスク・フローの権限のチェックを可能にし、適切な権限を有するユーザーのみにタスク・フローの編集またはカスタマイズを許可します。

この項では、タスク・フローに対して制限を適用して権限チェックを可能にする方法を説明します。次のサブセクションが含まれます:

- 第23.6.1項「タスク・フローに対する権限の付与」

- 第23.6.2項「タスク・フローの権限チェックの有効化」

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

jazn-data.xmlファイル概要エディタの「リソース権限」ページで権限付与を作成することで、タスク・フローのアクセス・ポリシーを定義できます。作成した権限は、ファイルのポリシー・ストア・セクションのメタデータとして表示されます。これらの権限またはパーミッションは、コンポーザでのタスク・フローのズーム・インおよび編集の機能を制御します。

jazn-data.xmlファイルでのタスク・フローに対する権限を付与または取り消すには:

1. 「アプリケーション」メニューから、「保護」、「ADFポリシー」の順に選択します。

2. 概要エディタでjazn-data.xmlファイル内のタスク・フローを選択し、図23-12で示すように「ロールに付与済」列の「追加」ボタンをクリックします。

図23-10 jazn-data.xmlファイル内のタスク・フロー・セキュリティ・リージョン

「図23-10 jazn-data.xmlファイル内のタスク・フロー・セキュリティ・リージョン」の説明

3. 「ロールの選択」ダイアログ(図23–13)で、「追加」ボタンをクリックすることで、権限を付与するアプリケーション・ロールまたは新規ロールを作成するアプリケーション・ロールを選択します。

図23-11 「ロールの選択」ダイアログ

「図23-11 「ロールの選択」ダイアログ」の説明

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

5. 「処理」列で1つ以上の権限を選択します。

6. jazn-data.xmlファイルを保存します。

注意:

ファイルの「ソース」ビューには、次のように権限付与が表示されます。

<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クラスは、タスク・フローの操作にマップされるタスク・フロー固有アクションを定義します。

タスク・フロー権限に基づくコンポーザの動作の詳細は、第17.7.1項「ページおよびタスク・フローのセキュリティ」を参照してください。

タスク・フローに対する権限付与の定義の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFバインド・タスク・フローのためのセキュリティ・ポリシーの定義方法に関する項を参照してください。

23.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ファイル内の設定をチェックします。

23.7 コンポーザのデフォルト・セキュリティ・ポリシーの上書き

コンポーザでは、カスタマイズを有効にするために次のセキュリティ・チェックが実行されます。

- ページ上のリージョンが編集権限またはカスタマイズ権限を付与されています。

- タスク・フローが編集権限またはカスタマイズ権限を付与されてます。

注意:

これは、デフォルトでは有効になっていない、オプションのセキュリティ設定です。

- コンポーネントはイテレータではネストされていません。

- MDSカスタマイズ制限がコンポーネントおよび属性に適用されています。

ユーザーは、前述の条件を満たしている場合のみ、ページおよびタスク・フローをカスタマイズできます。デフォルトでは、コンポーザは、ページ・レベルのセキュリティ・チェックを実行するためにpagePolicyを使用します。

場合によっては、様々なセキュリティ・チェックを実行する必要がある(おそらく、コンポーザによってすでに提供されているものにアプリケーション・レベルのいくつかのチェックを追加する)可能性があります。それを行うには、コンポーザのデフォルトのセキュリティ・ポリシーをカスタム・ポリシーで上書きします。この項では、その実行方法を説明します。次の項が含まれます:

- 第23.7.1項「カスタム・セキュリティ・ポリシーの作成方法」

- 第23.7.2項「コンポーザでのカスタム・ポリシーの登録方法」

- 第23.7.3項「実行時の処理」

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

コンポーザの基本セキュリティ・クラスを拡張することで、カスタム・ポリシーを作成できます。ページまたはタスク・フローをチェックするかどうかに応じて、次の基本セキュリティ・クラスを拡張できます。

- ページ・ポリシー: oracle.adf.view.page.editor.security.BasePageSecurityPolicy

- タスク・フロー・ポリシー: oracle.adf.view.page.editor.security.TaskflowPermissionPolicy

もう一歩前進するために、カスタム・チェックが適用できない場合や適切な結果を実現しない場合にコンポーザのデフォルト・チェックが実行されるように、ポリシーを構成できます。このためには、DefaultPageSecurityPolicyクラスを拡張して、例23-6で示すようにsuper.isCustomizable()メソッドをコールする必要があります。

例23-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();
}
}

23.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です。

タスク・フロー・ポリシーの詳細は、第23.6項「タスク・フローのセキュリティの実装」を参照してください。

注意:

ここに記載していない即時利用可能なポリシーは、引き続きデフォルトでチェックされます。

<pe:policy-class>は、カスタム・ポリシー・クラスの名前を指定します。

3. adf-config.xmlファイルを保存します。

23.7.3 実行時の処理

コンポーザは、カスタム・ポリシーで定義されているセキュリティ・チェックを実行し、それに応じてコンポーネントに対してカスタマイズを有効にします。

23.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ファイルでタスク・フローに権限を付与できません。

解決方法

第23.6項「タスク・フローのセキュリティの実装」で記述しているように、Java起動パラメータでサーバーを実行していることを確認します。

24 タスク・フローのカスタマイズ

Oracle JDeveloperの「カスタマイズ開発者」ロールを使用して、Oracle WebCenter Portalタスク・フローのルック・アンド・フィールおよび機能を拡張または変更できます。タスク・フローのカスタマイズをデプロイ済Frameworkアプリケーションに適用する場合、そのカスタマイズは、アプリケーションのタスク・フローのすべてのインスタンスに適用されます。個々のタスク・フロー・インスタンスにカスタマイズをデプロイする必要はありません。

Oracle WebCenter Portal: Spacesでは、タスク・フローのカスタマイズはアプリケーション・レベルでデプロイされるため、カスタマイズはすべてのスペースに適用されます。特定のスペースのタスク・フローのみをカスタマイズするには、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』で説明しているタスク・フロー・カスタマイズ用のSpaces実行時管理ツールを使用する必要があります。テキストの追加、既存のコネクタを非表示にする、既存のコンテンツを再配置するなど、カスタマイズに若干の変更を加える場合も、実行時管理ツールを使用できます。カスタマイズにスペースのすべてのインスタンスに適用する複雑なレイアウト変更が必要な場合、この章で説明する開発ベースのカスタマイズ・アプローチを使用してください。

注意:

Frameworkアプリケーションに対してビュー・レベルのカスタマイズが実行可能な場合、ADFモデルおよびControllerのカスタマイズは、このリリースではサポートされていません。異なるカスタマイズ・タイプの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Java EE開発者ガイド』を参照してください。

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

- 第24.1項「タスク・フローのカスタマイズの準備」: タスク・フローのカスタマイズの前に、これらのカスタマイズを受け入れるためにアプリケーションを有効化する必要があります。

- 第24.2項「JDeveloperの「カスタマイズ開発者」ロールの構成」: アプリケーションのカスタマイズを有効化した後、JDeveloperの「カスタマイズ開発者」ロールで使用するカスタマイズ・レイヤーの値を構成する必要があります。

- 第24.3項「Oracle WebCenter Portalタスク・フロー」: この項の手順では、WebCenter Portal: SpacesまたはWebCenter Portal: Frameworkアプリケーションのタスク・フローをカスタマイズする方法について説明します。この項の例では、JDeveloperの「カスタマイズ開発者」ロールを使用したWebCenter Portalタスク・フローのカスタマイズを示します。

- 第24.4項「デプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用」: タスク・フローのカスタマイズを完了した後、この項の手順に従ってデプロイ済WebCenter Portalアプリケーションに適用する必要があります。

- 第24.5項「デプロイ済WebCenter Portalアプリケーションからのカスタマイズの削除」: タスク・フローの動作およびルック・アンド・フィールを元のデプロイメントに戻すには、この項の手順を使用してタスク・フローのカスタマイズを削除します。

- 第24.6「WebCenter Portalタスク・フローのカタログ」: この項では、カスタマイズで使用可能なWebCenter Portalタスク・フローをリストします。

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

次の手順によって、タスク・フローのカスタマイズのためにWebCenter Portalアプリケーションを準備します。

1. JDeveloperに、WebCenter PortalカスタマイズJDeveloper拡張機能をインストールします。そのためには、「ヘルプ」→「更新の確認」>を選択します。

2. 更新の確認ウィザードで、「次へ」をクリックします。

3. 更新の検索ページで、Oracle Fusion Middleware製品の更新センターを選択して「次へ」をクリックします。

4. 更新ページの「可能な更新」フィールドにwebcenterと入力します。

5. Oracle WebCenter Portalカスタマイズ・フレームワーク・デザインタイム拡張機能を選択して、「終了」をクリックします。

注意:

Oracle WebCenter Portal Frameworkおよびサービス・デザインタイム拡張機能の最新バージョンをインストール済ではない場合は、カスタマイズ拡張機能の前にインストールする必要があります。

24.1.1 WebCenter Portal: Spaces: 新しいタスク・フロー・カスタマイズ・アプリケーションの作成

WebCenter Portal: Spacesでタスク・フローをカスタマイズしている場合、JDeveloperを開いて新しいWebCenter Spacesタスク・フロー・カスタマイズ・アプリケーションを作成します。

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

Frameworkアプリケーションでタスク・フローを有効にするには、最初にアプリケーションをWebCenter Portal: Frameworkアプリケーション・テンプレートを使用して作成済であることを確認します。(新しいFrameworkアプリケーションの作成の詳細は、第5.2項「Frameworkアプリケーションの作成」を参照してください。)その後、次の手順を実行します。

1. アプリケーション・ナビゲータで、ViewControllerプロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログで「ADFビュー」を選択し、「シード・カスタマイズの有効化」チェック・ボックスを選択します。「OK」をクリックしてファイルを保存します。

図24-1 シード・カスタマイズの有効化

「Figure 24-1 シード・カスタマイズの有効化」の説明

24.2 JDeveloperの「カスタマイズ開発者」ロールの構成

第24.1項「タスク・フローのカスタマイズの準備」で説明されているように、アプリケーションのカスタマイズを有効化した後、JDeveloperの「カスタマイズ開発者」ロールで使用するカスタマイズ・レイヤーの値を構成する必要があります。

1. JDeveloperで、「ツール」→「プリファレンス」→「ロール」→「カスタマイズ開発者」の順に選択し、「OK」をクリックします。

図24-2 「カスタマイズ開発者」ロールの選択

「図24-2 「カスタマイズ開発者」ロールの選択」の説明

2. JDeveloperから再起動するよう求められます。「はい」を選択して「カスタマイズ開発者」ロールでJDeveloperを再起動します。

3. カスタムFrameworkアプリケーションで、「カスタマイズ・コンテキスト」ウィンドウに移動して「グローバル・レイヤー値のオーバーライド」をクリックします。

図24-3 「カスタマイズ・コンテキスト」: 「グローバル・レイヤー値のオーバーライド」

「図24-3 「カスタマイズ・コンテキスト」: 「グローバル・レイヤー値のオーバーライド」」の説明

アプリケーションのカスタマイズ・クラスの構成を入力します。デフォルトの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>

4. 「ライブラリの表示」がJDeveloperナビゲータの「プロジェクト」バーの右端のドロップダウンで有効になっていることを確認します。

図24-4 ナビゲータの表示オプション - 「ライブラリの表示」

「図24-4 ナビゲータの表示オプション - 「ライブラリの表示」」の説明

「カスタマイズ開発者」ロールでは、JDeveloperのアプリケーション・ナビゲータのアプリケーション名の横に、赤い人が表示されます。また、「次のカスタマイズ・コンテキストを使用して編集」が選択され、カスタマイズ・レイヤー名がsiteとして選択され、レイヤー値がCustomizationLayerValues.xmlで定義された値に設定された「カスタマイズ・コンテキスト」ウィンドウも表示されます。これらの値は、アプリケーションが正常に構成され、WebCenter Portalタスク・フローのカスタマイズが有効になったことを示します。

24.3 Oracle WebCenter Portalタスク・フロー

JDeveloperの「カスタマイズ開発者」ロールは、ベースのライブラリJARのコードを変更することなくADFライブラリをカスタマイズできる、強力なメカニズムです。Oracle WebCenter PortalおよびOracle ADFの両方でMDSを利用するため、「カスタマイズ開発者」ロールを使用してWebCenter Portal: SpacesおよびWebCenter Portal: Servicesのタスク・フローを拡張できます。すべてのWebCenter Portalタスク・フローはADFライブラリにパッケージ化されるため、JDeveloperデザインタイムでのタスク・フローのカスタマイズが可能です。「カスタマイズ開発者」ロールを構成する手順の詳細は、第24.2項「JDeveloperの「カスタマイズ開発者」ロールの構成」を参照してください。

タスク・フローのカスタマイズによって実現可能なユース・ケースは、次のとおりです。

- タスク・フローの列名を含むラベルを変更します。

- タスク・フローで使用されるアイコンを変更します。たとえば、ディスカッション - スペース・フォーラム・タスク・フローの「編集」アイコンおよび「リフレッシュ」アイコンを新しいアイコンに置き換えます。

- タスク・フローの表の列の順序を変更します。

- 主要タブの検索ボックスなど、すべてのリージョンまたはコンポーネントを削除します。

- 式言語を使用して追加の属性を表示します。たとえば、ピープル・ピッカー・タスク・フローをカスタマイズして追加のユーザー・プロファイル属性を表示します。

前述の項の説明に従って、カスタマイズのためのアプリケーションの準備の後、アプリケーションを起動して必要なカスタマイズを行います。

- タスク・フローのカスタマイズの詳細は、第24.3.1項「例: WebCenter Portal: Spacesのためのタスク・フローのカスタマイズ」および第24.3.2項「例: カスタムFrameworkアプリケーションのためのタスク・フローのカスタマイズ」を参照してください。

- カスタマイズ可能なタスク・フローのリストについては、第24.6項「WebCenter Portalタスク・フローのカタログ」を参照してください。

- カスタマイズを完了した後、第24.4項「デプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用」の説明に従ってカスタマイズをデプロイします。

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

WebCenter Portal: Spacesでタスク・フローをカスタマイズするには、第24.1.1項「WebCenter Portal: Spaces: 新しいタスク・フロー・カスタマイズ・アプリケーションの作成」で作成したアプリケーションを起動してカスタマイズを行います。一般的な2つのカスタマイズ例を次に示します。

- 第24.3.1.1項「例: ワークリスト・タスク・フローのカスタマイズ」

- 第24.3.1.2項「例: ディスカッション・フォーラム・タスク・フローのカスタマイズ」

24.3.1.1 例: ワークリスト・タスク・フローのカスタマイズ

この例では、Spacesのワークリスト・タスク・フローを、各ワークリスト項目の2行のエントリで、以前は2行目に表示していたワークリスト項目の詳細を、ポップアップの詳細へのリンクを提供する1行のエントリで置き換えることで、カスタマイズする方法を示します。次のイメージは、デフォルトの2行のエントリ構成のワークリストの例を示します。

図24-5 ワークリスト - カスタマイズ前

「図24-5 ワークリスト - カスタマイズ前」の説明

1. 「カスタマイズ開発者」ロールを使用していない場合は、このロールに切り替えます(「ツール」→「プリファレンス」→「ロール」→「カスタマイズ開発者」ロールの順に選択し、JDeveloperを再起動します)。

2. WebCenter Portal: Spacesタスク・フロー・カスタマイズ・アプリケーションを開きます。

3. アプリケーション・ナビゲータで、ViewControllerプロジェクトを展開し、WebCenterワークリスト・サービス・ビュー・ライブラリを表示します。(ライブラリが表示されない場合は、ViewControllerプロジェクトを右クリックして「プロジェクト」バーのナビゲーション表示オプションを選択し、「ライブラリの表示」を選択します。)

4. 「カスタマイズ・コンテキスト」パネルが構成済で、次に示すように編集がWebCenterカスタマイズ・レイヤーが適用されて行われることを確認します。

図24-6 カスタマイズ・コンテキスト

「図24-6 カスタマイズ・コンテキスト」の説明

5. WebCenterワークリスト・サービス・ビュー・ライブラリで、oracle.webcenter.worklist.view.jsf.fragmentsの下のworklist.jsffファイルを開きます。

6. ビューのリスト・ビュー・ファセットに切り替えます。ページ上の空白のファセットをクリックし、「次に切替え -リスト」を選択します。

図24-7 リスト・ビューに切替え

「図24-7 リスト・ビューに切替え」の説明

7. 「構造」ウィンドウで、構造ツリーを展開してaf:outputText - #{row.title}コンポーネントを探します。コンポーネントを右クリックして、「af:outputText - #{row.title}の前に挿入」→「リンク」を選択します。

8. 「構造」ウィンドウで、新規作成した「af:commandLink」をクリックし、「プロパティ・インスペクタ」ダイアログを開きます。

9. プロパティ・インスペクタで、「テキスト」フィールドの横にある下矢印をクリックし、「式ビルダー」を選択します。式として#{row.title}と入力します。

図24-8 プロパティ・インスペクタ

「図24-8 プロパティ・インスペクタ」の説明

10. プロパティ・インスペクタの「外観」セクションを開きます。ShortDescフィールドの横にある下矢印をクリックし、「式ビルダー」を選択します。式として#{row.dateInfoSummary}と入力します。

11. ActionListenerフィールドに、openTaskDetailsApp()と入力します。

12. 新規追加したcommandLinkを検索し、次のコンポーネントを削除します。
af:outputText - #{row.title}
af:panelGroupLayout

13. アプリケーション・ナビゲータの「ADFライブラリのカスタマイズ」ノードの下に生成されるworklist.jsff.xmlファイルには、次のようなコードが含まれます。

例24-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>

14. 第24.4項「デプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用」の説明に従って、メタデータ・デプロイメント・プロファイルをWebCenter Portal: Spacesアプリケーションにデプロイします。

次のイメージは、1行でポップアップを備えたカスタマイズ後のサンプル・ワークリストを示します。

図24-9 ワークリスト - カスタマイズ後

「図24-9 ワークリスト - カスタマイズ後」の説明

24.3.1.2 例: ディスカッション・フォーラム・タスク・フローのカスタマイズ

この例では、WebCenter Portal: Spacesディスカッション・フォーラム・タスク・フローをカスタマイズして、ディスカッションを開始したユーザーのプロファイル・イメージを表示する方法を示します。次のイメージは、プロファイル・イメージのないディスカッション・フォーラムの例を示します。

図24-10 ディスカッション・フォーラム - カスタマイズ前

「図24-10 ディスカッション・フォーラム - カスタマイズ前」の説明

ディスカッション・フォーラム・タスク・フローをカスタマイズするには:

1. 「カスタマイズ開発者」ロールを使用していない場合は、このロールに切り替えます(「ツール」→「プリファレンス」→「ロール」→「カスタマイズ開発者」ロールの順に選択し、JDeveloperを再起動します)。

2. WebCenter Portal: Spacesタスク・フロー・カスタマイズ・アプリケーションを開きます。

3. アプリケーション・ナビゲータで、ViewControllerプロジェクトを展開し、WebCenter Portalディスカッション・サービス・ビュー・ライブラリを表示します。(ライブラリが表示されない場合は、ViewControllerプロジェクトを右クリックして「プロジェクト」バーのナビゲーション表示オプションを選択し、「ライブラリの表示」を選択します。)

4. WebCenter Portalディスカッション・サービス・ビュー・ライブラリで、oracle.webcenter.collab.forum.view.jsf.fragmentsの下のListTopics.jsffファイルを開きます。

5. 「構造」ウィンドウで、ページ上の<rtc:presence>タグを検索します。このタグを使用すると、ユーザーの名前がレンダリングされます。

図24-11 「構造」ウィンドウ

「図24-11 構造ウィンドウ」の説明

6. rtc.:presenceタグを右クリックし、「後ろに挿入」→「ADF Faces」の順に選択し、ダイアログから「パネル・グループ・レイアウト」を選択します。

7. 「構造」ウィンドウで「パネル・グループ・レイアウト」を右クリックし、「挿入」→「イメージ・コンポーネント」の順に選択します。

8. 新しいイメージ・コンポーネントのプロパティ・インスペクタで、「ソース」プロパティを#{webCenterProfile[row.createdBy].photoURI['SMALL']}に設定します。ELによって現在のユーザーがプロファイル写真として設定したイメージの場所が戻されます。

9. ファイルを保存してプロジェクトを再ビルドします。
生成したListTopics.jsff.xmlファイルには、次のようなコードが含まれます。

例24-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>

10. 第24.4項「デプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用」の説明に従って、メタデータ・デプロイメント・プロファイルをSpacesアプリケーションにデプロイします。

次のイメージは、プロファイル・イメージ付きのカスタマイズ後のディスカッション・フォーラムの例を示します。

図24-12 ディスカッション・フォーラム - カスタマイズ後(ユーザー・プロファイル・イメージ付き)

「図24-12 ディスカッション・フォーラム - カスタマイズ後(ユーザー・プロファイル・イメージ付き)」の説明

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

カスタムFrameworkアプリケーションでタスク・フローをカスタマイズするには、はじめに第24.1.2項「WebCenter Portal: Frameworkアプリケーション: カスタマイズの有効化」の手順を実行します。次の例は、一般的なカスタマイズを示しています。

24.3.2.1 例: ドキュメント・ライブラリ - リスト・ビュー・タスク・フローのカスタマイズ

次の例では、ドキュメント・ライブラリ - リスト・ビュー・タスク・フローをカスタマイズして、HTMLレンディションと呼ばれる新しい列を追加する方法を示しています。これらの手順を実行する前に、第24.1.2項「WebCenter Portal: Frameworkアプリケーション: カスタマイズの有効化」の説明に従ってカスタマイズ可能なFrameworkアプリケーションが準備済であることを確認します。

1. カスタムFrameworkアプリケーションをJDeveloperで開き、「カスタマイズ開発者」ロールを使用していることを確認します。

2. リソース・パレットの「カタログ」の下で、「WebCenter Portal - サービス・カタログ」を展開し、「タスク・フロー」フォルダを開きます。

3. 「ドキュメント・ライブラリ - リスト・ビュー」を右クリックし、「プロジェクトに追加」を選択します。確認ダイアログが表示されたら、「ライブラリの追加」をクリックします。

4. アプリケーション・ナビゲータで、ViewControllerプロジェクトを展開し、WebCenterドキュメント・ライブラリ・サービス・ビュー・ライブラリを表示します。(ライブラリが表示されない場合は、ViewControllerプロジェクトを右クリックして「プロジェクト」バーのナビゲーション表示オプションを選択し、「ライブラリの表示」を選択します。)

5. WebCenter Portalドキュメント・ライブラリ・サービス・ビュー・ライブラリで、oracle.webcenter.doclib.view.jsf.fragmentsの下のdocListViewerTableTemplate.jsffファイルを開きます。

6. 新しい列をITEM_NAME_COLUMN_HEADERの後に追加します。

1. 「構造」ウィンドウで、タイトルが#{dlBndl.ITEM_NAME_COLUMN-HEADER}の列を右クリックし、「コピーして貼付け」を選択して新しいADF列コンポーネントを作成します。

2. 新しいADF列コンポーネントのプロパティ・インスペクタで、headerTextプロパティを「HTMLレンディション」に変更します。

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}"

7. ファイルを保存します。

24.4 デプロイ済WebCenter Portalアプリケーションへのタスク・フローのカスタマイズの適用

前述の項で、WebCenter Portalタスク・フローのカスタマイズ方法について、異なるシナリオで説明しました。これらの演習では、生成されたMDSカスタマイズが出力されます。カスタマイズは、libraryCustomizationパッケージの下のアプリケーションのViewプロジェクトに、.xml.xmlまたは.jsff.xmlファイルとして表示されます。これらのカスタマイズ・ドキュメントは、基本的に実行時のカスタマイズの動作を示すベース・ドキュメントの最上部に、MDSが変更を適用するための手順です。

タスク・フローのカスタマイズを完了した後、この項の手順に従ってデプロイ済WebCenter Portalアプリケーション(FrameworkまたはSpaces)に適用する必要があります。実行時にJDeveloperのタスク・フローで実行されるカスタマイズを表示するには、これらのカスタマイズをデプロイ済アプリケーションのMDSリポジトリにインポートする必要があります。

注意:

このプロセスにより、ランタイムWebCenter Portalアプリケーションのメタデータ・リポジトリが更新され、これらの手順の実行前にMDSスキーマがバックアップされます。また、カスタマイズを開発環境またはステージング環境でカスタマイズをテストすることもベスト・プラクティスです。

WebCenter Portalタスク・フローのカスタマイズをMDSリポジトリにインポートするには、次の項の手順を使用します。

- 第24.4.1項「カスタムWebCenter Portalアプリケーション用メタデータ・デプロイ・プロファイルの作成」

- 第24.4.2項「JDeveloperからの直接的なタスク・フローのカスタマイズのデプロイ」

- 第24.4.3項「WLSTを使用したタスク・フローのカスタマイズのデプロイ」

24.4.1 カスタムWebCenter Portalアプリケーション用メタデータ・デプロイ・プロファイルの作成

次の手順を使用して、カスタムWebCenter Portalアプリケーション用メタデータ・デプロイ・プロファイルを作成します。(WebCenter Portal: Spacesタスク・フロー・カスタマイズ・アプリケーションを使用している場合、これらの手順は不要です。)

1. アプリケーション・ナビゲータで、「アプリケーション・メニュー」から「アプリケーション・プロパティ」を選択します。

図24-13 「アプリケーション・プロパティ」

「図24-13 「アプリケーション・プロパティ」」の説明

2. 「デプロイメント」を選択し、「MARファイル」アーカイブ・タイプを使用してデプロイメント・プロファイルを作成します。

図24-14 デプロイメント・プロファイルの作成

「図24-14 デプロイメント・プロファイルの作成」の説明

3. 「OK」をクリックして「デプロイメント・プロファイルの作成」ダイアログを閉じます。

4. 「OK」をクリックしてから再び「OK」をクリックして、デプロイメント・プロファイルの作成を終了します。

24.4.2 JDeveloperからの直接的なタスク・フローのカスタマイズのデプロイ

次の手順を使用して、タスク・フローのカスタマイズをJDeveloperから直接デプロイします。

1. アプリケーション・ナビゲータで、「アプリケーション・メニュー」から「デプロイ」→「metadata」(metadataはデプロイメント・プロファイルの名前)の順に選択します。

図24-15 「metadata」デプロイメント・プロファイルのデプロイ

「図24-15 「metadata」デプロイメント・プロファイルのデプロイ」の説明

2. 「metadataのデプロイ」ダイアログで、「デプロイ済アプリケーションへのエクスポート」を選択して「次へ」をクリックします。

図24-16 「metadataのデプロイ」ダイアログ

「図24-16 「metadataのデプロイ」ダイアログ」説明

3. アプリケーション・サーバー・ページで、デプロイするインスタンスのアプリケーション・サーバー接続を選択するか、+アイコンをクリックして新しい接続を作成します。「次へ」をクリックします。

図24-17 metadataのデプロイ: アプリケーション・サーバー

「図24-17 metadataのデプロイ: アプリケーション・サーバー」の説明

4. 「サーバー・インスタンス」ページで、カスタマイズしているアプリケーションをデプロイするサーバーを選択します。複数のサーバーで単一のアプリケーションをホストする高可用性インストールの場合、カスタマイズは1つのサーバーにのみデプロイする必要があります。「次へ」をクリックします。

図24-18 「metadataのデプロイ」ダイアログ: サーバー・インスタンス

「図24-18 「metadataのデプロイ」ダイアログ: サーバー・インスタンス」の説明

5. デプロイ済アプリケーション・ページで、カスタマイズをデプロイするアプリケーションを選択します。「次へ」をクリックします。

図24-19 metadataのデプロイ: デプロイ済アプリケーション

「図24-19 metadataのデプロイ: デプロイ済アプリケーション」の説明

6. 「終了」をクリックしてカスタマイズをデプロイします。

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

次の手順を使用して、タスク・フローのカスタマイズをWLSTを使用してデプロイします。

1. アプリケーション・ナビゲータで、「アプリケーション・メニュー」から「デプロイ」→「metadata」(metadataはデプロイメント・プロファイルの名前)の順に選択します。

図24-20 「metadata」デプロイメント・プロファイルのデプロイ

「図24-20 「metadata」デプロイメント・プロファイルのデプロイ」の説明

2. 「metadataのデプロイ」ダイアログで、「MARにデプロイ」ファイルを選択して「終了」をクリックします。

ヒント:

また、「デプロイ済アプリケーションにエクスポート」オプションを選択してプリケーションをデプロイするサーバーの接続詳細を構成し、適切なアプリケーションを選択することでデプロイ済アプリケーションにメタデータをエクスポートできます。

3. JDeveloperは、JDEV_USERホーム・ディレクトリのアプリケーション・ディレクトリにMARファイルを作成します。カスタマイズが含まれるこのMARファイルを、アプリケーションがデプロイされるディレクトリにコピーします。このアプリケーションのカスタマイズ・バージョンを常に保持できるよう、このファイルのバックアップを管理します。

4. MDS WLSTインポート・コマンドを使用して、タスク・フローのカスタマイズをアプリケーションのMDSリポジトリにインポートします。

例24-3 カスタマイズをインポートするコマンドライン

wls:/weblogic/serverConfig>importMetadata(application='webcenter',
server='WC_Spaces',
fromLocation='/path/metadata.mar',
docs='/**')

MDS WLSTコマンドの詳細は、Oracle Technology Networkで『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』を参照してください。

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

タスク・フローのカスタマイズを削除して、タスク・フローの動作またはルック・アンド・フィールを元のデプロイメントに戻すことができます。

MDS WLSTのdeleteMetadataコマンドを使用して、適用されたカスタマイズを削除します。deleteMetadataコマンドは、誤って使用するとメタデータ・ドキュメントの損失が発生する場合があるため、注意して実行する必要があります。次のサンプル・コマンドは、第24.3.1.2項「例: ディスカッション・フォーラム・タスク・フローのカスタマイズ」で作成したカスタマイズを削除します。

例24-4 デプロイ済WebCenter Portalアプリケーションからカスタマイズ・メタデータを削除するコマンド

deleteMetadata(application='webcenter',server='WC_Spaces', docs='/oracle/webcenter/webcenterapp/view/taskflows/discussionServices/**', excludeBaseDocs='true')

MDS WLSTコマンドの詳細は、Oracle Technology Networkの『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』を参照してください。

24.6 WebCenter Portalタスク・フローのカタログ

次のタスク・フローは、ビュー・レベルのカスタマイズで有効です。これらのタスク・フローは、ライブラリまたはJARファイル内、および表24-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

表24-1 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: Spacesのビュー

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: Spacesのビュー

oracle/webcenter/webcenterapp/view/taskflows/translations/ChooseLanguageTaskflow.xml

コミュニティ・ブラウザ・リージョン

WebCenter Portal: Spacesのビュー

oracle/webcenter/community/view/taskflows/browser/CommunityBrowserRegion.xml

コミュニティ連絡先タスク・フロー

WebCenter Portal: Spacesのビュー

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

コネクション - ネットワーク

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/connections/controller/taskflows/connections-network-taskflow.xml

カスタマイズ・マネージャ・タスク・フロー

Oracle Composer

oracle/adfinternal/pageeditor/manager/taskflows/customization-manager-taskflow.xml

ディスカッション

WebCenter Portalのディスカッション・サービス・ビュー

oracle/webcenter/collab/forum/view/taskflows/miniview-task-flow.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/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/mainView.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: Spaces管理者に起動されるスペースまたはスペース・テンプレートのエクスポート

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

リスト・インスタンス・ビューのタスク・フロー

WebCenter Portalのリスト・サービス・ビュー

oracle/webcenter/list/view/jsf/regions/list-instance-view-task-flow.xml

このタスク・フローの表の列は実行時に動的に設定され、カスタマイズできません。

メール

WebCenter Portalのメール・サービス・ビュー

oracle/webcenter/collab/mail/view/jsf/regions/mini-view-definition.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のIMおよびプレゼンス・サービス・ビュー

oracle/webcenter/collab/rtc/view/jsf/regions/presence-controls-taskflow.xml

プロファイル - アクション

WebCenter Portalピープル・コネクション・ビュー

oracle/webcenter/peopleconnections/view/jsf/regions/profile-actions.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/profile/view/jsf/regions/summary/profile-summary.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/selfregistration/jsf/taskflows/selfreg-task-flow-definition.xml

Spacesおよびカスタム・アプリケーションで使用されるパブリック・ユーザー登録は、どちらもカスタマイズ可能です。

セキュリティ - 自己登録 - 公開招待

WebCenter Portalの共通ビュー

oracle/webcenter/security/view/selfregistration/jsf/taskflows/invitation-task-flow-definition.xml

Spacesに参加するためのパブリック・ユーザーの招待カスタム・アプリケーションでのみ使用されます。

セキュリティ - エンタープライズ・ロール - メンバー

WebCenter Portalの共通ビュー

oracle/webcenter/security/view/rolemembers/jsf/taskflows/rolemembers-task-flow-definition.xml

エンタープライズ・グループのメンバーをリストします。Spacesおよびカスタム・アプリケーションで使用されます。どちらもカスタマイズ可能です。

セキュリティ - エンタープライズ・ロール - メンバー検索

WebCenter Portalの共通ビュー

oracle/webcenter/security/view/rolemembers/jsf/taskflows/rolemembers-psearch-task-flow-definition.xml

特定のパターンのエンタープライズ・グループのメンバーを返します。Spacesおよびカスタム・アプリケーションで使用されます。どちらもカスタマイズ可能です。

セキュリティ - エンタープライズ・ロール - メンバー・ビューア

WebCenter Portalの共通ビュー

oracle/webcenter/security/view/rolemembers/jsf/taskflows/rolemembers-browser-task-flow-definition.xml

タブ付きページです。1つのタブにはグループのメンバーが表示され、もう1つのタブには検索フォームが提供されます。Spacesおよびカスタム・アプリケーションで使用されます。どちらもカスタマイズ可能です。

セキュリティ - ロール・マネージャ

WebCenter Portalの共通ビュー

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

特定の外部アプリケーションの資格証明プロビジョニングです。Spacesおよびカスタム・アプリケーションで使用されます。どちらもカスタマイズ可能です。

セキュリティ - 外部アプリケーションのパスワード変更

WebCenter Portalの外部アプリケーション・サービス・ビュー

oracle/adfinternal/extapp/view/fragments/extapp-change-password-taskflow.xml

作成済のすべての外部アプリケーションのパスワードを変更するための画面です。Spacesおよびカスタム・アプリケーションで使用されます。どちらもカスタマイズ可能です。

類似アイテム

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のSmartTagビュー

oracle/webcenter/collab/smarttag/view/jsf/taskflows/menudata-task-flow-definition.xml

スマート・タグ・アクション・イネーブラ

WebCenter PortalのSmartTagビュー

oracle/webcenter/collab/smarttag/view/jsf/taskflows/action-enabler-task-flow-definition.xml

Spaces

WebCenter Portal: Spacesのビュー

oracle/webcenter/community/view/taskflows/browsers/CommunityBrowserRegion.xml

スペース・メンバー

WebCenter Portal: Spacesのビュー

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/worklist/view/jsf/taskFlowDefs/worklist.xml

第IV部

コンテンツの統合と公開

第IV部の内容は次のとおりです。

- 第25章「コンテンツの統合と公開の概要」

- 第26章「コンテンツ・リポジトリ接続の管理」

- 第27章「コンテンツ・データ・コントロールの使用」

- 第28章「コンテンツ・プレゼンタ表示テンプレートの作成」

- 第29章「ドキュメント・サービスの統合」

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

- 第31章「Wikiとブログの統合」

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

WebCenter Portal: Frameworkアプリケーションにコンテンツを統合するには、いくつかの方法があります。選択する方法は、アプリケーションの要件と、コンテンツをどのようにエンド・ユーザーに公開するかによって異なります。

コンテンツをFrameworkアプリケーションに統合するには、次のいずれかの方法を使用します(詳細は、この章の最後に紹介する関連資料を参照)。

- コンテンツ・データ・コントロールでは、JCRアダプタを使用することによって、Content Server、Oracle PortalまたはSharePointコンテンツ・リポジトリに格納されたコンテンツへの読取り専用アクセスを実現できます。また、Frameworkアプリケーションにおけるコンテンツの表示方法を厳重に管理することもできます。
この機能は主に、以前のリリースとの後方互換性を維持するため、およびコンテンツ・プレゼンタまたはドキュメント・サービスとそのタスク・フローによって対応できない要件を満たすために提供されます。

- Content Management Interoperability Services (CMIS) REST APIにより、Content Server内のコンテンツを表面化および管理します。

- コンテンツ・プレゼンタを使用すると、Frameworkアプリケーションにおけるコンテンツの選択およびプレゼンテーションを細部までカスタマイズできます。接続されるコンテンツ・リポジトリがContent Serverであり、WebCenter Portal管理者が前提条件構成を完了させた場合のみ、コンテンツ・プレゼンタ・タスク・フローが利用できます。コンテンツ・プレゼンタを使用すると、単一のコンテンツ・アイテム、フォルダの下にあるコンテンツ、アイテムのリストまたはコンテンツの問合せを選択するか、パーソナライズ・コンダクタのシナリオの結果に基づいてコンテンツを選択してから、Frameworkアプリケーション内のページにコンテンツをレンダリングするためのテンプレートを選択できます。コンテンツ・プレゼンタでは表示されるコンテンツの追加や管理においてドキュメント・サービスに依存しません。

- ドキュメント・サービスのタスク・フローとコンポーネントでは、Wikiやブログなど、Frameworkアプリケーションでページ上にフォルダとファイルを表示するための様々な形式が提供されます。アプリケーションに合ったタスク・フローを選択することによって、Content Server、Oracle PortalまたはSharePointコンテンツ・リポジトリにあるフォルダとファイルへのアクセス、追加および管理を行う機能、それらのファイルとフォルダのプロパティを構成し表示する機能、およびファイルとフォルダのコンテンツを検索する機能が提供されます。

注意:

SharePointをコンテンツ・リポジトリとして使用するには、第3.6項「SharePoint用Oracle WebCenterアダプタのインストール」の説明に従って、SharePointアダプタのインストールが必要です。SharePointの管理は、Oracle Enterprise Manager Fusion Middleware ControlコンソールではなくWLSTコマンドを使用して行います。

ドキュメント・サービス・タスク・フローとドキュメント・コンポーネント(リンク、プレビューおよびイメージなど)を使用すると、コンテンツをアプリケーションに追加し、アプリケーションに組み込まれたドキュメント・サービス・タスク・フローとコンテンツもエンド・ユーザーに用意して、実行時にドキュメントの管理、表示および検索ができます。

表25-1に、これらの方法の概要を、ニーズに対して最適な方法を選択できるよう比較形式で示します。

表25-1 コンテンツをFrameworkアプリケーションに統合する方法

コンテンツ・データ・コントロール

Content Management REST API

コンテンツ・プレゼンタ

ドキュメント・サービス

リポジトリ

コンテンツ・サーバー

Oracle Portal

SharePoint

コンテンツ・サーバー

コンテンツ・サーバー

コンテンツ・サーバー

Oracle Portal

SharePoint

コンテンツ・タイプ

フォルダとコンテンツ・ファイル。

メタデータ・プロパティをサポートするフォルダとコンテンツ・ファイル。

メタデータ・プロパティをサポートするフォルダとコンテンツ・ファイル。

Oracle Site Studioリージョン定義ベースのコンテンツをサポートします。

フォルダとコンテンツ・ファイル。

Content Serverのみ。フォルダとコンテンツ・ファイルのメタデータ・プロパティをサポートします。

コンテンツ表示

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: Spacesのみ)

- メタデータの表示

利点

様々なコンテンツ・リポジトリと統合された標準JCR API。

クライアント側のスタイル開発に役立つ柔軟なRESTベースAPI。

表示テンプレートを使用した柔軟な表示。

Oracle Site Studioのサポート。

簡単に管理対象コンテンツにアクセスできるUIを提供するタスク・フローの選択。

制限

コンテンツが読取り専用です。

Oracle Site Studioはサポートされません。

コンテンツがOracle Content Serverリポジトリ内に格納されている必要があります。

Oracle Site Studioはサポートされません。

コンテンツがContent Serverリポジトリ内に格納されている必要があります。

Oracle Site Studioはサポートされません。

次の章では、使用する方法にかかわらず必要になる情報が提供されます。

- WebCenter Portalアプリケーションによって使用されるコンテンツ・リポジトリの構成と管理については、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のコンテンツ・リポジトリの管理に関する項を参照してください。

- 分散しているコンテンツへのアクセスを提供するコンテンツ・リポジトリ接続の構成と編集については、第26章「コンテンツ・リポジトリ接続の管理」を参照してください。

次の章では、コンテンツ・データ・コントロールの使用に関する情報が提供されます。

- Javaコンテンツ・リポジトリ(JCR)データ・コントロールを使用して、コンテンツ・リポジトリへの読取り専用アクセスを可能にする方法については、第27章「コンテンツ・データ・コントロールの使用」を参照してください。

次のマニュアルでは、CMIS (Content Management Interoperability Services) REST APIの使用に関する情報が提供されます。

- Oracle Fusion Middleware Content Management REST Service開発者ガイド

次の章では、コンテンツ・プレゼンタの使用に関する情報が提供されます。

- 第28章「コンテンツ・プレゼンタ表示テンプレートの作成」

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

- WebCenter Portalアプリケーションで実行時にコンテンツを使用する方法については、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のコンテンツ・プレゼンタを使用したコンテンツの公開に関する項を参照してください。

次の章では、ドキュメント・サービス・タスク・フロー、ドキュメント・コンポーネント(リンク、インライン・フレームおよびイメージ)、Wiki、ブログなど、ドキュメント・サービスの使用に関する情報が提供されます。

- 第29章「ドキュメント・サービスの統合」

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

- 第31章「Wikiとブログの統合」

- WebCenter Portalアプリケーションで実行時にコンテンツを使用する方法については、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のドキュメント・サービス・タスク・フローとドキュメント・コンポーネントの使用に関する項を参照してください。

26 コンテンツ・リポジトリ接続の管理

WebCenter Portal: Frameworkアプリケーションにコンテンツを統合するには、いくつかの方法があります。詳細は、第25章「コンテンツの統合と公開の概要」を参照してください。

この章では、コンテンツに対するアクセスを提供するためにコンテンツ・リポジトリへの接続を構成する方法、およびFrameworkアプリケーションでページにコンテンツを追加する方法について説明します。

この章には次の項が含まれます:

- 第26.1項「コンテンツ・アダプタの概要」

- 第26.2項「コンテンツ・リポジトリ接続の構成」

- 第26.3項「コンテンツ・リポジトリ接続の編集」

- 第26.4項「新規WebCenter Portal: Frameworkアプリケーションに対する既存のリポジトリ接続の使用」

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

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リポジトリからのコンテンツを統合するために使用します。
このアダプタは、第3.6項「SharePoint用Oracle WebCenterアダプタのインストール」の説明に従ってインストールする必要があります。

- ファイル・システム: ファイル・システム・アダプタは、オペレーティング・システムのファイル・システムに存在するコンテンツをJSFページに追加するために使用します。
このアダプタはOracle WebCenter Portal拡張機能バンドルでバンドルされているので、デフォルトで統合されます。

注意:

ファイル・システム・アダプタは、開発環境でのみ使用することを目的としています。

26.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接続の下に作成できます。

この項には次のサブセクションが含まれます:

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

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

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

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

- 第26.2.5項「リポジトリ接続の作成時に行われる処理」

- 第26.2.6項「リポジトリ接続の作成時の必知事項」

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

この項では、Content Serverベースのコンテンツ・リポジトリ接続の構成方法について説明します。以降の手順を正常に終了するには、Content Serverリリース11.1.1.4.0または10.1.3.5.1を使用する必要があります。コンテンツ・プレゼンタには、リリース11.1.1.4.0または10.1.3.5.1が必要です。Oracle WebCenter Portal用Content Serverを構成する方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracle WebCenter Content: Content Serverの前提条件に関する項を参照してください。

WebCenter Portalアプリケーション(SpacesアプリケーションおよびFrameworkアプリケーション)でContent Serverを動作させるために必要な前提条件およびタスクの概要は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のContent Serverの構成ロードマップに関する項を参照してください。

Content Serverベースのリポジトリ接続を作成するには:

1. Oracle JDeveloperで、Frameworkアプリケーションを開きます。

2. 「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「コンテンツ・リポジトリ」を選択します。

3. 「コンテンツ・リポジトリ接続の作成」ダイアログで、接続の接続名(MyOCSConnectionなど)を指定します。

ヒント:

「アプリケーション・リソース」パネルでのアプリケーション固有接続の作成か、ソース・パレット(IDE接続)での共通接続の作成かを選択できます。

4. 「リポジトリ・タイプ」ボックスからOracle Content Serverを選択します。

5. 「ドキュメント・サービスのプライマリ接続として設定」を選択し、ドキュメント・サービスまたはコンテンツ・プレゼンタを通じたすべてのコンテンツ管理操作についてこの接続をプライマリ(デフォルト)接続にします。このオプションを選択すると、構成がadf-config.xmlファイルに書き込まれ、この接続がデフォルト接続として識別されます。connectionNameパラメータがドキュメント・サービス・タスク・フロー用に指定されていると、その値によりこの設定がオーバーライドされます。

注意:

ドキュメント・サービスのプライマリ(デフォルト)接続として接続を設定するには、「接続の作成場所」で「アプリケーション・リソース」オプションを選択する必要があります。これは、IDE接続として作成された接続を直接使用できないためであり、アプリケーションに追加する必要があります。

6. 表26-1および図26-1に示すように、「構成パラメータ」でパラメータの値を入力します。

表26-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)接続を使用します。

JAX-WS - Content Serverに接続するためにHTTP(S)接続を使用します。

表26-2には、各RIDCソケット・タイプで必要な構成パラメータについての詳細な情報が記載されています。

サーバー・ホスト名

Content Serverが実行するシステムのホスト名。たとえば、mycontentserver.mycompany.comなどです。

コンテンツ・サーバー・リスナー・ポート

「サーバー・ホスト名」フィールドで指定したサーバーのポート。これは、Content Server構成ファイルのIntradocServerPort設定に対応し、デフォルトはポート4444です。

Webサーバー・プラグインのURL

RIDCソケット・タイプがwebの場合、次のURLであることが必要です。

Content Serverリリース11.1.1.4.0の場合: http://host_name:port_number/_dav/web_root/plugin_root。たとえば、http://mycontentserver:4444/_dav/cms/idcplgのようになります。

Content Serverリリース10.1.3.5の場合: http://host_name:port_number/web_root/plugin_root。たとえば、http://mycontentserver:4444/cs/idcplgのようになります。

Webサーバー・コンテキスト・ルート

Frameworkアプリケーションで高度なメタデータおよびSite Studioの機能を統合するためのContent Server用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 Application Server Web Servicesセキュリティ・ガイド』のセキュリティ・ポリシーに関する項を参照してください。

クライアント側でセキュリティ・ポリシーを構成する場合の詳細は、『Oracle WebCenter Content Content Server開発者ガイド』のクライアントの構成に関する項を参照してください。

サーバー側でセキュリティ・ポリシーを構成する場合の詳細は、『Oracle WebCenter Content Content Server開発者ガイド』のWS-Policyを通じたWS-Securityの構成に関する項を参照してください。

キャッシュ無効化間隔

WebCenterのキャッシュで外部Content Serverのコンテンツの変更を自動的に検出するのに使用される間隔(分)。これらのアイテムへの変更がContent ServerのUIに対して直接行われた場合に、WebCenterによってキャッシュされたアイテムが自動的にクリアされます。間隔は分単位で指定します。値が0の場合、キャッシュ無効化は無効になります。キャッシュ無効化が有効になる最小値は2です。

バイナリ・キャッシュの最大エントリ・サイズ

Content Serverバイナリ・ドキュメントのWebCenterキャッシュの最大サイズ(バイト数)。このサイズより大きいドキュメントは、WebCenterでキャッシュされません。単位はバイトで、デフォルトは102400 (100KB)です。

表26-2 Content Serverの各RIDCソケット・タイプの接続パラメータ

接続パラメータ

RIDCソケット・タイプ: web

RIDCソケット・タイプ: socket

RIDCソケット・タイプ: socketssl

RIDCソケット・タイプ: jaxws

サーバー・ホスト名

該当なし

コンテンツ・プレゼンタの場合は必須

デフォルトは、ローカル・ホストです。

コンテンツ・プレゼンタの場合は必須

デフォルトは、ローカル・ホストです。

該当なし

コンテンツ・サーバー・リスナー・ポート

該当なし

サーバー内の受信プロバイダに対して指定されたポート。

デフォルトは、4444です。

サーバー内のsslincomingプロバイダに対して指定されたポート。

デフォルトは、4444です。

該当なし

Webサーバー・プラグインのURL

必須

該当なし

該当なし

必須。http://hostname:port/web_rootの形式を使用します。

たとえば、http(s)://myhost.com:9044/idcnativewsのようになります。

Webサーバー・コンテキスト・ルート

オプション

オプション

オプション

オプション

JAX-WSクライアント・セキュリティ・ポリシー

該当なし

該当なし

該当なし

グローバル・ポリシー・アタッチメントが使用されていない場合は必須です。使用されている場合は、空白のままにしておく必要があります。

これは、OWSMクライアント・セキュリティ・ポリシーの名前です。このポリシーは、Content Server上で適用された対応サーバー側ポリシーに一致する必要があります。セキュリティ・ポリシーの詳細は、『Oracle Application Server Web Servicesセキュリティ・ガイド』のセキュリティ・ポリシーに関する項を参照してください。

管理ユーザー名

必須

オプション

デフォルトは、sysadminです。

オプション

デフォルトは、sysadminです。

オプション。デフォルトはweblogicです。

管理パスワード

必須

該当なし

該当なし

パスワードが使用されるかどうかは、選択したJAX-WSセキュリティ・ポリシーに応じて異なります。

キーストアおよび秘密鍵

該当なし

該当なし

必須

該当なし

アイデンティティ伝播

実行時にはサポートされません

サポート対象

テスト目的では、ユーザー名が指定されていない場合や無効なユーザー名が指定された場合、ゲストとして接続します。

サポート対象

テスト目的では、ユーザー名が指定されていない場合や無効なユーザー名が指定された場合、ゲストとして接続します。

JAX-WSセキュリティ・ポリシーでアイデンティティ伝播をサポートする場合に、サポートされます。

外部アプリケーション

必須

サポート対象

パスワードは使用されません。

サポート対象

パスワードは使用されません。

サポート対象。パスワードが使用されるかどうかは、選択したJAX-WSセキュリティ・ポリシーに応じて異なります。

ユーザー名およびパスワード

サポート対象

サポート対象

パスワードはテスト接続操作中に検証されません。

サポート対象

パスワードはテスト接続操作中に検証されません。

サポート対象。パスワードが使用されるかどうかは、選択したJAX-WSセキュリティ・ポリシーに応じて異なります。

図26-1 コンテンツ・リポジトリ接続 - Content Server

「図26-1 コンテンツ・リポジトリ接続 - Content Server」の説明

7. 「ログイン・タイムアウト(ミリ秒)」フィールドで、時間をミリ秒単位で指定します。コンテンツ・リポジトリとのセッションの確立を試行する際にアプリケーションが待機する必要がある時間がこのタイムアウト時間により決まります。ネットワーク接続や接続試行先コンテンツ・リポジトリ・サーバーが低速な場合、このフィールドで指定されたデフォルト値をオーバーライドすることを検討してください。

8. 適切な認証方法を選択します。詳細は、第26.2.6.1項「アイデンティティ伝播および外部アプリケーションの認証方式の使用に関する必要な知識」を参照してください。アイデンティティ伝播認証方式を選択した場合、Content ServerでSecure Socket Layer (SSL)を構成する必要があります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracle WebCenter Content: Content Serverのセキュリティの考慮事項に関する項を参照してください。

9. 「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスの下にある「ユーザー名」フィールドおよび「パスワード」フィールドは、アイデンティティ伝播認証方式のオプションです。保護されたアプリケーションで、アイデンティティ伝播が選択認証方式である場合、「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択することにより、認証されたコンテンツ・リポジトリ接続に設計時に移動できます。このチェック・ボックスを選択した場合、指定したユーザー名およびパスワードが認証可能であるかどうかを検証できます。

注意:

「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスが選択されると、入力した資格証明が使用されます。このチェック・ボックスの選択が解除されると、接続は「外部アプリケーション」の資格証明(存在する場合)を使用してテストされます。それ以外の場合はNULLの資格証明が使用されます。

認証に「外部アプリケーション」を選択し、公開または共有資格証明も指定した場合、公開または共有資格証明が設計時のログインに使用できるため、このフィールドは空白のままにできます。ただし、「外部アプリケーション」を選択して、公開または共有資格証明を指定していない場合、ここでユーザー名とパスワードを指定する必要があります。

10. 「テスト」をクリックします。
テスト中に、ユーザー名とパスワードが使用されます(指定した場合)。指定しない場合、共有資格証明または公開資格証明とともに外部アプリケーションが定義されていると、その情報が使用されます。それ以外の場合、ゲスト・ユーザーが使用されます。

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

12. 「アプリケーション・リソース」パネルで、先ほど作成したリポジトリ接続を開きます。「接続資格証明」ダイアログが表示されます。

注意:

資格証明を保存しない(「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択しない)場合、あるいは公開または共有資格証明を使用する外部アプリケーション・サービスを指定しない場合、「接続資格証明」ダイアログが表示されます。

13. Content Server接続のユーザー名とパスワードを入力し、「OK」をクリックします。「アプリケーション・リソース」パネルに接続が表示されます。

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

この項では、Oracle Portalアダプタに基づいたコンテンツ・リポジトリ接続を作成する方法について説明します。リポジトリ接続を作成する前に、第26.2.6項「リポジトリ接続の作成時の必知事項」を参照してください。この接続を使用して、Oracle PortalリポジトリからJSFページにコンテンツを追加できるコンテンツ・データ・コントロールを構成できます。

Oracle Portalリポジトリ接続を作成するには:

1. Oracle JDeveloperで、Frameworkアプリケーションを開きます。

2. 「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「コンテンツ・リポジトリ」を選択します。

3. 「コンテンツ・リポジトリ接続の作成」ダイアログで、接続の名前(MyOraclePortalなど)を指定します。

ヒント:

「アプリケーション・リソース」パネルでのアプリケーション固有接続の作成か、ソース・パレット(IDE接続)での共通接続の作成かを選択できます。

4. 図26-2に示すように、「リポジトリ・タイプ」から「Oracle Portal」を選択します。

図26-2 コンテンツ・リポジトリ接続 - Oracle Portal

「図26-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. 前述の各手順を実行していない場合、表26-3および図26-3に示すように、ドライバを選択してホスト名、JDBCポート、SIDおよびサービス名を入力します。

表26-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データベース・インスタンスのサービス名。

図26-3 データベース接続の作成

「図26-3 データベース接続の作成」の説明

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

7. 「コンテンツ・リポジトリ接続の作成」ダイアログの「ログイン・タイムアウト(ミリ秒)」フィールドで、時間をミリ秒単位で指定します。コンテンツ・リポジトリとのセッションの確立を試行する際にアプリケーションが待機する必要がある時間がこのタイムアウト時間により決まります。ネットワーク接続や接続試行先コンテンツ・リポジトリ・サーバーが低速な場合、このフィールドで指定されたデフォルト値をオーバーライドすることを検討してください。

8. 適切な認証方法を選択します。詳細は、第26.2.6.1項「アイデンティティ伝播および外部アプリケーションの認証方式の使用に関する必要な知識」を参照してください。

9. 「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択し、ポータル・インスタンスにログインするためのOracle Portalシングル・サインオンのユーザー名とパスワードを入力します。ここで入力されたOracle Portalシングル・サインオンのユーザー名とパスワードは接続のテストで使用され、設計時にのみ機能します。次に、「OK」をクリックします。

注意:

「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスが選択されると、入力した資格証明が使用されます。このチェック・ボックスの選択が解除されると、接続は「外部アプリケーション」の資格証明(存在する場合)を使用してテストされます。それ以外の場合はNULLの資格証明が使用されます。

認証に「外部アプリケーション」を選択し、公開または共有資格証明も指定した場合、公開または共有資格証明が設計時のログインに使用できるため、このフィールドは空白のままにできます。外部アプリケーションに公開と共有の両方の資格証明を指定した場合、公開資格証明が優先されます。ただし、「外部アプリケーション」を選択して、公開または共有資格証明を指定していない場合、ここでユーザー名とパスワードを指定する必要があります。

10. 「アプリケーション・リソース」パネルで、先ほど作成したリポジトリ接続を開きます。「接続資格証明」ダイアログが表示されます。

注意:

資格証明を保存しない(「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択しない)場合、あるいは公開または共有資格証明を使用する外部アプリケーション・サービスを指定しない場合、「接続資格証明」ダイアログが表示されます。

11. Oracle Portal接続のユーザー名とパスワードを入力し、「OK」をクリックします。「アプリケーション・リソース」パネルに接続が表示されます。

関連項目:

この接続を使用してデータ・コントロールを作成するには、第27.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」に記載された手順を行ってください。

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

SharePoint用Oracle WebCenterアダプタは、Microsoft SharePoint 2007リポジトリ内のコンテンツを抽出および検索します。このアダプタは、Microsoft SharePoint SOAPインタフェースを使用してリポジトリにアクセスします。SharePoint用Oracle WebCenterアダプタを構成および使用する前に、第26.2.6.3項「SharePoint用Oracle WebCenterアダプタに関する必要な知識」を参照することをお薦めします。

この項には次のサブセクションが含まれます:

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

- 第26.2.3.2項「Microsoft SharePointコンテンツおよびサービスのマッピング」

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

SharePoint用Oracle WebCenterアダプタに基づくリポジトリ接続を作成するには:

1. Oracle JDeveloperで、Frameworkアプリケーションを開きます。

2. 「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「コンテンツ・リポジトリ」を選択します。

3. 「コンテンツ・リポジトリ接続の作成」ダイアログで、接続の接続名(MySPConnectionなど)を指定します。

ヒント:

「アプリケーション・リソース」パネルでのアプリケーション固有接続の作成か、ソース・パレット(IDE接続)での共通接続の作成かを選択できます。

4. 「リポジトリ・タイプ」ボックスからJCR SharePointアダプタを選択します。

注意:

このオプションは、SharePoint用Oracle WebCenterアダプタの拡張機能がインストールされている場合にのみ表示されます。

5. ドキュメント・サービスに対するデフォルト接続にする場合、「ドキュメント・サービスのプライマリ接続として設定」を選択します。このオプションを選択すると、構成がadf-config.xmlファイルに書き込まれ、この接続がドキュメント・サービスのデフォルト接続として識別されます。ドキュメント・ライブラリ・タスク・フローがconnectionName入力パラメータを指定せずに使用された場合、この接続が使用されます。ドキュメント・サービスの詳細は、第29章「ドキュメント・サービスの統合」を参照してください。

注意:

ドキュメント・サービスのプライマリ接続として接続を設定するには、「接続の作成場所」で「アプリケーション・リソース」オプションを選択する必要があります。これは、IDE接続として作成された接続を直接使用できないためであり、アプリケーションに追加する必要があります。

6. 「構成パラメータ」で、接続するSharePointサイトのWebアドレスであるSharePoint URLを入力します。たとえば、図26-4に示すように、http://mysharepoint.mycompany.comと入力します。

図26-4 コンテンツ・リポジトリ接続 - SharePoint用Oracle WebCenterアダプタ

「図26-4 コンテンツ・リポジトリ接続 - SharePoint用Oracle WebCenterアダプタ」の説明

7. LIKE制限の文字数を表す整数値を入力します。値を設定しない場合、Microsoft SharePoint Serverに渡される検索パターン文字列の制限として、LIKE制限はデフォルトの64文字になります。値を0に設定した場合、全文字列がサーバーに渡されます。つまり、LIKE制限は無効になります。このパラメータはオプションです。デフォルトの状態のまま設定することをお薦めします。関連情報の詳細は、第26.2.6.3項「SharePoint用Oracle WebCenterアダプタに関する必要な知識」を参照してください。

8. 「ログイン・タイムアウト(ミリ秒)」フィールドで、時間をミリ秒単位で指定します。コンテンツ・リポジトリとのセッションの確立を試行する際にアプリケーションが待機する必要がある時間がこのタイムアウト時間により決まります。デプロイ済アプリケーションとMicrosoft SharePointリポジトリの間では高速なネットワーク接続を使用することをお薦めします。ネットワーク接続や接続試行先コンテンツ・リポジトリ・サーバーが低速な場合、このフィールドで指定されたデフォルト値をオーバーライドすることを検討してください。

9. 「外部アプリケーション」認証方式を選択します。この認証方式の詳細は、第26.2.6.1項「アイデンティティ伝播および外部アプリケーションの認証方式の使用に関する必要な知識」を参照してください。

注意:

Microsoft SharePoint用Oracle WebCenterアダプタでは、アイデンティティ伝播認証方式はサポートされません。したがって、外部アプリケーション認証方式により、リポジトリのアクセス時に、すべてのユーザーに対する資格証明の単一共有セットを使用します。また、外部アプリケーションの構成で共有資格証明および公開資格証明を省略することによって、各ユーザーがリポジトリに最初にアクセスするときに独自のログイン資格証明を入力できるようにこのオプションを構成できます。これによってシステムでは、以降のアクセス・リクエストでそれぞれの固有の資格証明が再使用されます。

10. 「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択し、「ユーザー名」と「パスワード」を指定します。この手順はオプションであり、前の手順で作成した外部アプリケーション認証資格証明をオーバーライドする場合にのみ必要です。さらに、このオーバーライドはJDeveloperの設計時にのみ適用されます。

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

12. オプションで接続をテストするには、「アプリケーション・リソース」パネルで、先に作成したリポジトリ接続を開きます。「接続資格証明」ダイアログが表示されます。

注意:

資格証明を保存しない(「現在のJDeveloperセッションのログイン資格証明を指定」チェック・ボックスを選択しない)場合、あるいは公開または共有資格証明を使用する外部アプリケーション・サービスを指定しない場合、「接続資格証明」ダイアログが表示されます。

13. この接続のユーザー名とパスワードを入力し、「OK」をクリックします。「アプリケーション・リソース」パネルに接続が表示されます。
この手順はオプションです。

26.2.3.2 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位置

図26-5に示すように、SharePointサービスv3チーム・サイトの共有ドキュメント・ライブラリは、パス/sp:Site/sp:RootWeb/sp:Lists/Shared Documents/sp:Filesに表示されます。

図26-5 SharePointサービスv3チーム・サイト用の共有ドキュメント・ライブラリ・パス

「図26-5 SharePointサービスv3チーム・サイト用の共有ドキュメント・ライブラリ・パス」の説明

インストール中に作成されたMOSS 2007サイトでは、図26-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に似ています。

図26-6 MOSS 2007サイトのドキュメント・センターのドキュメント・ライブラリ・パス

「図26-6 MOSS 2007サイトのドキュメント・センターのドキュメント・ライブラリ・パス」の説明

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

この項では、ファイル・システム・アダプタに基づいたコンテンツ・リポジトリ接続を作成する手順について説明します。ファイル・システム・アダプタは、開発環境でのみ使用することを目的としています。

ファイル・システム・リポジトリ接続を作成するには:

1. Oracle JDeveloperで、Frameworkアプリケーションを開きます。

2. 「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「コンテンツ・リポジトリ」を選択します。

3. 「コンテンツ・リポジトリ接続の作成」ダイアログで、接続の名前(MyConnectionなど)を入力します。

ヒント:

「アプリケーション・リソース」パネルでのアプリケーション固有接続の作成か、ソース・パレット(IDE接続)での共通接続の作成かを選択できます。

4. 「リポジトリ・タイプ」ボックスから「ファイル・システム」を選択します。

5. 「ドキュメント・サービスのプライマリ接続として設定」を選択し、ドキュメント・サービスまたはコンテンツ・プレゼンタを通じたすべてのコンテンツ管理操作についてこの接続をプライマリ(デフォルト)接続にします。このオプションを選択すると、構成がadf-config.xmlファイルに書き込まれ、この接続がデフォルト接続として識別されます。connectionNameパラメータがドキュメント・サービス・タスク・フロー用に指定されていると、その値によりこの設定がオーバーライドされます。

注意:

ドキュメント・サービスのプライマリ(デフォルト)接続として接続を設定するには、「接続の作成場所」で「アプリケーション・リソース」オプションを選択する必要があります。これは、IDE接続として作成された接続を直接使用できないためであり、アプリケーションに追加する必要があります。

6. 「構成パラメータ」で「ベース・パス」行を選択し、C:\MyContentなどのコンテンツが置かれているフォルダのパスを入力します。

注意:

ファイル・システム接続を作成する場合、次の点を考慮する必要があります。

- 第27.5項「コンテンツ・データ・コントロールを使用したコンテンツの統合」では、ベース・パス値が、ファイル・システム・ベースのデータ・コントロールのルート("/")として使用されます。

- UNIXシステムで作業している場合、ファイル・システム・アダプタはUNIXシステムの大/小文字が区別されるファイル名特性を継承します。このため、UNIXシステムで、ファイルへの参照で元のファイル名と同じ大/小文字が使用されていることを確認してください。たとえば、Test.htmlというファイルがMicrosoft Windowsシステムで作成されたとします。このファイルをLinuxシステムで参照する場合、必ず、test.htmlやTest.htmlではなくTEST.htmlを使用してください。

7. 「ログイン・タイムアウト(ミリ秒)」フィールドは空白のままにしておきます。

8. 「接続のテスト」をクリックして、接続詳細を適切に入力したかどうか確認します。図26-7に示すように、Success!というステータスが表示されます。

図26-7 ファイル・システム接続

「図26-7 ファイル・システム接続」の説明

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

10. 「アプリケーション・リソース」パネルで、先ほど作成したリポジトリ接続を開きます。

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

リポジトリへの接続を作成する場合、図26-8に示すように、リポジトリのメイン・ディレクトリのコンテンツが「アプリケーション・リソース」パネルの「コンテンツ・リポジトリ接続」の下に表示されます。フォルダおよびファイルは、ダブルクリックすると表示されます。

図26-8 アプリケーション・リソース

「図26-8 アプリケーション・リソース」の説明

リポジトリ接続を使用すると、リポジトリ・コンテンツとJSFページの統合を可能にするJCRデータ・コントロールを作成できます。詳細は、第27.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」および第27.5項「コンテンツ・データ・コントロールを使用したコンテンツの統合」を参照してください。またこうした接続は、ドキュメント・サービスおよびコンテンツ・プレゼンタ・タスク・フローを通じて利用できます。詳細は、第29章「ドキュメント・サービスの統合」を参照してください。

26.2.6 リポジトリ接続の作成時の必知事項

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

- 第26.2.6.1項「アイデンティティ伝播および外部アプリケーションの認証方式の使用に関する必要な知識」

- 第26.2.6.2項「Oracle Portalに関する必要な知識」

- 第26.2.6.3項「SharePoint用Oracle WebCenterアダプタに関する必要な知識」

26.2.6.1 アイデンティティ伝播および外部アプリケーションの認証方式の使用に関する必要な知識

「コンテンツ・リポジトリ接続の作成」ダイアログには、認証方法として次のオプションが用意されています。

- アイデンティティ伝播: このオプションを選択した場合、リポジトリに資格証明が渡されません。現在のユーザーのアイデンティティが、Javaセキュリティ・コンテキストから決定されたものとしてリポジトリ・コネクタでかわりに使用されます。これは、アプリケーションとリポジトリでユーザーの認証に同じアイデンティティ・ストアが使用される場合にのみ、使用することが必要です。
認証されたユーザーのみがリポジトリでサポートされるか、パブリック・ユーザーまたはゲスト・ユーザーに制限アクセスのみが提供される場合があるため、この認証方法を使用する場合、ADFセキュリティの構成ウィザードを使用してアプリケーションにセキュリティを構成することをお薦めします。第27.4項「コンテンツ・リポジトリのデータ・コントロールの保護」を参照してください。

- 外部アプリケーション: 外部アプリケーションの方式では、現在のユーザー・アイデンティティを直接リポジトリに伝播しない、その他のすべてのケースで使用できます。詳細は、第68.13項「外部アプリケーションの使用」および第29.3項「ドキュメント・サービスのセキュリティの設定」を参照してください。
外部アプリケーション・サービスでは、様々な資格証明を接続に関連付けることができます。

- アプリケーションがセキュアでない場合、またはユーザーがまだログインしていない場合は、公開資格証明が使用されます。

- 認証されたユーザーには、共有資格証明が使用されます。

- 共有資格証明を指定しない場合、アプリケーションとコンテンツ・リポジトリで同じユーザー・ストアを使用しないと、マップ済資格証明を使用してアイデンティティ伝播と同様の結果を得ることができます。この場合、外部アプリケーション・サービスによって実行時の画面が提供され、ユーザーは、コンテンツ・リポジトリにアクセスするための資格証明を指定できます。これらの資格証明はセキュアに格納され、このユーザーが確立を試みるその後の接続に使用されます。

外部アプリケーション・サービスを構成するには、「新規」をクリックして外部アプリケーションの登録ウィザードを起動し、次のようにします。

1. 外部アプリケーションの名前を指定します。

2. 「ログインURL」フィールドにhttp://content-server.mycompany.com/idc/などの外部アプリケーションのURLを入力します。

注意:

このURLはオプションで、コンテンツ・リポジトリの独自ユーザー・インタフェースへのクリックスルー・ログインを提供する場合のみ必須です。クリックスルー・ログインの構成方法の詳細は、外部アプリケーション・サービスのドキュメントを参照してください。

3. 「認証の詳細」でリストから、「基本」を選択します。「ログインの詳細」の下にあるフィールドは空白のままにします。
このオプションは、クリックスルー・ログインが必要でない場合に選択します。クリックスルー・ログインを有効にした場合、リポジトリで使用される認証方式に基づいて、別のオプションを選択する必要があります。

4. デフォルト値を受け入れて、「次へ」をクリックします。

5. 設計時および実行時に使用できる共有資格証明を入力します。ユーザーが独自の資格証明を指定する必要がある場合、共有資格証明を指定しないでください。

6. 設計時および実行時に使用できるパブリック資格証明を入力します。パブリック資格証明は、パブリック・ユーザーにドキュメントまたはコンテンツを表示する場合にのみ指定します。
「終了」をクリックします。

26.2.6.2 Oracle Portalに関する必要な知識

Oracle Portalアダプタを使用する際は、次のことを考慮してください。

- Oracle Portalベースのコンテンツ・データ・コントロール機能を使用するには、Oracle Portalリリース10.1.4.1、10.1.4.2または11をインストールします。Oracle Portalリリース10.1.4.1を使用する場合、必要なパッチを使用して更新する必要があります。正確なパッチ番号を調べるには、(必要なプラットフォームの)Oracle Application Serverリリース11.1.1.0.0のリリース・ノートを参照してください。

- サポートされるタイプは、アイテム・タイプfile、image、imagemapおよびtextと、これらのアイテム・タイプに基づいたカスタム・タイプのみです。

- portal:containerページ・タイプおよびその拡張要素がサポートされます。

- コンテンツは常に、ページ・グループのデフォルト言語で公開されます。たとえば、デフォルト言語の異なる3つのページ・グループがある場合、コンテンツはこれらのデフォルト言語に対してのみ表示され、翻訳が存在していても表示されません。

26.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アダプタではセッション・ベースのメモリー・キャッシュが維持されます。このアダプタを使用するFrameworkアプリケーションでは、未使用のセッションがすべて閉じられ、アダプタ・メモリー・キャッシュがリリースされるように、アプリケーションのweb.xmlファイルでHttp Session time-outを構成する必要があります。

- マッピング: マッピングでは、JCR APIで定義され関連するコンテンツのアーティファクトおよびサービスのみが考慮されます。さらにアダプタは、サーバー側のカスタム追加コンポーネントに依存しないので、ネイティブSharePoint Webサービスによりサポートされる程度まで、コンテンツおよびサービスにマップします。したがって、次のことが該当します。

- 全文検索では、SharePointサーバーによって索引を付けられたアイテムのみが返されます。

- 検索可能な列セットは制限されます。

- 検索では固定されたノード・タイプ・セットがサポートされます。

- 一部の検索では、WebサービスからJCRに結果をマップするのに必要な全情報をアダプタが受信しないので、追加ネットワーク・ラウンドトリップが必要になります。

アダプタは、ネイティブWebインタフェースによってコンテンツが公開される方法と類似した階層的な方法でMicrosoft SharePointサーバーからのコンテンツを公開します。階層のアイテムは、nt:folderまたはnt:fileのいずれかのプライマリ・タイプか、それらの特殊化タイプを持ちます。SharePointの追加固有特性は、Mixin(つまり、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。

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

この項では、共通またはアプリケーション固有のコンテンツ・リポジトリ接続を編集する方法について説明します。この項には次のサブセクションが含まれます:

- 第26.3.1項「共通リポジトリ接続の編集方法」

- 第26.3.2項「WebCenter Portal: Frameworkアプリケーション固有のコンテンツ・リポジトリ接続の編集方法」

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

共通リポジトリ接続(IDE接続)は、リソース・パレットで作成および編集します。

共通リポジトリ接続を編集するには:

1. リソース・パレットで、編集するリポジトリ接続を右クリックし、図26-9に示すように「プロパティ」を選択します。図26-10に示すように、「リポジトリ接続の編集」ダイアログが表示されます。

図26-9 リソース・パレット - プロパティ

「図26-9 リソース・パレット - プロパティ」の説明

図26-10 コンテンツ・リポジトリ接続の編集

「図26-10 コンテンツ・リポジトリ接続の編集」の説明

2. 適切なパラメータを変更します。

3. 接続をテストし、「OK」をクリックします。

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

アプリケーション固有のコンテンツ・リポジトリ接続は、「アプリケーション・リソース」パネルの下に表示されます。

Frameworkアプリケーション固有のコンテンツ・リポジトリ接続を編集するには:

1. 「アプリケーション・リソース」パネルで、編集するリポジトリ接続を右クリックし、図26-11に示すように「プロパティ」を選択します。図26-12に示すように、「コンテンツ・リポジトリ接続の編集」ダイアログが表示されます。

図26-11 「アプリケーション・リソース」 - 「プロパティ」

「図26-11 「アプリケーション・リソース」 - 「プロパティ」」の説明

図26-12 コンテンツ・リポジトリ接続の編集

「図26-12 コンテンツ・リポジトリ接続の編集」の説明

2. 適切なパラメータを変更します。リポジトリのタイプに応じて、リポジトリ接続を作成する方法について説明する前述の項を参照してください。たとえばContent Serverの場合、第26.2.1項「Oracle Content Serverアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」を参照してください。

3. 接続をテストし、「OK」をクリックします。

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

既存のリポジトリ接続は、リソース・パレットで共通リポジトリとして作成した場合、Frameworkアプリケーションに使用できます。

既存のリポジトリ接続を使用するには:

1. Oracle JDeveloperで、既存のリポジトリ接続を使用するFrameworkアプリケーションを開きます。

2. 図26-13に示すように、「リソース・パレット」へ移動して新しいアプリケーションで使用するリポジトリ接続(たとえばMyConnection_2)を選択し、新しいアプリケーションの「アプリケーション・リソース」パネルの下にドロップします。

ヒント:

あるいは、接続を右クリックして「アプリケーションに追加」を選択します。「アプリケーション・リソース」パネルに接続が表示されます。

図26-13 既存の共通リポジトリ接続(IDE接続)をアプリケーションにドラッグする

「図26-13 既存の共通リポジトリ接続(IDE接続)をアプリケーションにドラッグする」の説明

これで、第27.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」に記載のように、このリポジトリ接続からの新規アプリケーション用データ・コントロールを構成できます。

27 コンテンツ・データ・コントロールの使用

WebCenter Portal: Frameworkアプリケーションにコンテンツを統合するには、いくつかの方法があります。詳細は、第25章「コンテンツの統合と公開の概要」を参照してください。

JCR APIは、基礎となるリポジトリまたはコンテンツのタイプ(たとえばドキュメント、リレーショナル・コンテンツなど)に関係なく、コンテンツへの独立したアクセスを可能にします。JSR 170で定義されているJCR 1.0 APIは、コンテンツの読取り、書込み、参照および検索のための一連の基本機能を提供しています。JCRデータ・コントロールでは、他のJCR 1.0リポジトリとの接続および読取りも可能です。Oracle WebCenter Content: Content Server、Oracle Portal、SharePoint用Oracle WebCenterアダプタおよびファイル・システムで使用可能なコンテンツをJSFページに追加するには、まずリポジトリへの接続を作成した後、その接続を使用してリポジトリに基づいてデータ・コントロールを作成します。

この章には次の項が含まれます:

- 第27.1項「コンテンツ・データ・コントロールの概要」

- 第27.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」

- 第27.3項「コンテンツ・リポジトリ・データ・コントロールの編集」

- 第27.4項「コンテンツ・リポジトリのデータ・コントロールの保護」

- 第27.5項「コンテンツ・データ・コントロールを使用したコンテンツの統合」

27.1 コンテンツ・データ・コントロールの概要

コンテンツ・データ・コントロールとは、すべてのデータ・オブジェクト、コレクション、メソッドおよび操作のコンテナであり、Frameworkアプリケーション内にユーザー・インタフェース(UI)コンポーネントを作成するために使用されます。データ・コントロールでは、簡単に使用できるメソッドが提供され、これをJSFページにドラッグ・アンド・ドロップして、URL、ファイルおよびフォルダなどのADFコンポーネントとしてコンテンツを公開できます。コンテンツを公開するためのメソッド、パラメータおよびデフォルト属性は、すべてのJCRデータ・コントロール間で類似していますが、コンテンツ統合モジュールによって、要件に応じた属性のカスタマイズを柔軟に行えます。

どのタイプのコンテンツ・データ・コントロールにも、コンテンツをリンク、表、ファイルおよびフォルダとして公開しコンテンツに検索機能と拡張検索機能を追加するためのメソッドおよびパラメータが含まれています。パラメータには、2つのタイプの属性(デフォルトおよびカスタム)が含まれます。デフォルト属性は、ファイル・システム、Oracle Portal、Oracle WebCenter Content: Content ServerおよびSharePoint用Oracle WebCenterアダプタに基づくデータ・コントロールで共通です。カスタム属性は、リポジトリに固有であり、コンテンツ・データ・コントロールの作成中に追加できます。

次の各項で、ファイル・システム、Oracle Portal、Oracle WebCenter Content: Content ServerおよびSharePoint用Oracle WebCenterアダプタに基づくデータ・コントロールで共通のメソッド、パラメータおよびデフォルト属性について説明します。

- 第27.1.1項「getItemsメソッド」

- 第27.1.2項「searchメソッド」

- 第27.1.3項「advancedSearchメソッド」

- 第27.1.4項「getURIメソッド」

- 第27.1.5項「getAttributesメソッド」

27.1.1 getItemsメソッド

getItemsメソッドは、リポジトリ内の特定位置を開始点として格納されているファイルおよびフォルダを返します。このメソッドを使用すると、フォーム、表および階層ツリー内にコンテンツを公開できます。また、このメソッドを使用すると、ナビゲーション・リストおよびボタンも作成できます。

表27-1に、getItemsメソッドのパラメータを示します。

表27-1 getItemsメソッドのパラメータ

パラメータ

説明

path

getItemsの開始ポイントを定義します。

type

返される要素(ファイルのみ、フォルダのみ、またはオブジェクト)を指定します。

getItemsメソッドは、表27-2に示された属性を返します。

表27-2 getItemsメソッドの戻り属性

パラメータ

説明

icon16

ドキュメント・サービスでアイテムに使用するアイコンへのURIを指定します。

icon32

ドキュメント・サービスでアイテムに使用するアイコンへのURIを指定します。

ID

IDが必要なドキュメント・サービス・タスク・フローへのパラメータです。

lastModified

アイテムの最終変更日に関する説明です。

name

返されるファイルまたはフォルダの名前を指定します。

path

コンテンツ・リポジトリ内での、返されるファイルまたはフォルダの場所を指定します。

URI

ファイルまたはフォルダのダイレクト・アクセスURL。

primaryType

返されるオブジェクトがファイルかフォルダまたはそれ以外のタイプであるかを指定します。

27.1.2 searchメソッド

searchメソッドを使用すると、名前パターンまたはキーワードでの標準検索を作成できます。

表27-3に、searchメソッドのパラメータを示します。

表27-3 searchメソッドのパラメータ

パラメータ

説明

path

検索の開始パス。

isRecursive

指定されたフォルダのみを検索する(=false)か、指定されたパスから始まるツリー全体を検索する(=true)かを指定します。

デフォルト値はfalseです。つまり、このフィールドを空白のままにすると、指定したフォルダでsearchが実行されます。この値がtrueの場合にのみ、階層全体でsearchが実行されます。

keyword

全文検索の検索キーワード。

namePattern

名前でのパターン検索。ワイルドカード%は任意の数の文字に対して、ワイルドカード_は1文字に対して使用します。

searchメソッドは、表27-4に示す属性を返します。

表27-4 searchメソッドの戻り属性

パラメータ

説明

icon16

ドキュメント・サービスでアイテムに使用するアイコンへのURIを指定します。

icon32

ドキュメント・サービスでアイテムに使用するアイコンへのURIを指定します。

ID

IDが必要なドキュメント・サービス・タスク・フローへのパラメータです。

lastModified

アイテムの最終変更日に関する説明です。

name

返されるファイルまたはフォルダの名前を指定します。

path

コンテンツ・リポジトリ内での、返されるファイルまたはフォルダの場所を指定します。

URI

ファイルまたはフォルダのダイレクト・アクセスURL。

primaryType

返されるオブジェクトがファイルかフォルダまたはそれ以外のタイプであるかを指定します。

27.1.3 advancedSearchメソッド

advancedSearchメソッドを使用すると、使用可能な属性から検索基準セットを作成することにより、拡張検索を実行できます。

表27-5に、advancedSearchメソッドのパラメータを示します。

表27-5 advancedSearchメソッドのパラメータ

パラメータ

説明

path

検索の開始パス。

isRecursive

指定されたフォルダのみを検索する(=false)か、指定されたパスから始まるツリー全体を検索する(=true)かを指定します。

デフォルト値はfalseです。つまり、このフィールドを空白のままにすると、指定したフォルダでsearchが実行されます。この値がtrueの場合にのみ、階層全体でsearchが実行されます。

keyword

全文検索の検索キーワード。

namePattern

名前でのパターン検索。ワイルドカード%は任意の数の文字に対して、ワイルドカード_は1文字に対して使用します。

matchAny

すべての述語が一致する必要がある(=false)か、いずれかの述語が一致すればよい(=true)かを指定します。

predicates

属性、コンパレータおよび値から構成されるSimplePredicateパラメータのコレクション。

type

返される要素(ファイルのみ、フォルダのみ、またはオブジェクト)を指定します。

advancedSearchメソッドは、表27-6に示す属性を返します。

表27-6 advancedSearchメソッドの戻り属性

パラメータ

説明

icon16

ドキュメント・サービスでアイテムに使用するアイコンへのURIを指定します。

icon32

ドキュメント・サービスでアイテムに使用するアイコンへのURIを指定します。

ID

IDが必要なドキュメント・サービス・タスク・フローへのパラメータです。

lastModified

アイテムの最終変更日に関する説明です。

name

返されるファイルまたはフォルダの名前を指定します。

path

コンテンツ・リポジトリ内での、返されるファイルまたはフォルダの場所を指定します。

URI

ファイルまたはフォルダのダイレクト・アクセスURL。

primaryType

返されるオブジェクトがファイルかフォルダまたはそれ以外のタイプであるかを指定します。

27.1.4 getURIメソッド

getURIメソッドは、ファイルまたはフォルダのダイレクト・アクセスURLであるURI属性を返します。そのpathパラメータによりオブジェクトへのパスを指定します。このメソッドを使用すると、コンテンツへのリンクを作成したり、ページでコンテンツをインライン表示できます。getURIメソッドは、URI属性を返します。

27.1.5 getAttributesメソッド

getAttributesメソッドは、特定のファイルまたはフォルダの属性および値のリストを返します。そのpathパラメータによりオブジェクトへのパスを指定します。

表27-7に、getAttributesメソッドにより返される属性を示します。

表27-7 getAttributesメソッドの戻り属性

パラメータ

説明

name

属性の名前

value

属性の値

27.2 JCRアダプタ対応のコンテンツ・データ・コントロールの構成

この項では、コンテンツのリポジトリ接続に基づくコンテンツ・データ・コントロールを作成する方法について説明します。

- 第27.2.1項「コンテンツ・リポジトリのデータ・コントロールの構成方法」

- 第27.2.2項「コンテンツ・リポジトリのデータ・コントロールを構成する場合の処理」

27.2.1 コンテンツ・リポジトリのデータ・コントロールの構成方法

コンテンツ・リポジトリ・データ・コントロールの作成手順は、データ・コントロールの作成に使用した接続のタイプに関係なく、同じです。コンテンツ・リポジトリへの接続を作成していない場合、第26.2項「コンテンツ・リポジトリ接続の構成」を参照してください。この項では、Content Serverベースの接続を使用してコンテンツ・データ・コントロールを作成します。

既存のコンテンツ・リポジトリ接続を使用してコンテンツ・データ・コントロールを作成するには:

1. アプリケーション・ナビゲータで、新しいデータ・コントロールのプロジェクト・エントリを作成するポータル・プロジェクトを選択します。
これは、データ・コントロールの定義とデータ・コントロールの使用を分離するために必要です。ポータル・プロジェクトを選択した場合、ユーザー・インタフェースが作成されるViewControllerプロジェクト内ではなく、「アプリケーション・ソース」サブ・フォルダ内にデータ・コントロール定義ファイルが作成されます。

2. 「アプリケーション・リソース」パネルで、リポジトリ接続を作成した「接続」フォルダを開きます。

3. 新規データ・コントロールに使用するリポジトリ接続をドラッグし、「データ・コントロール」パネルにドロップします。
または、「ファイル」メニューから「新規」を選択します。「新規ギャラリ」で、「ビジネス層」を開き、「コンテンツ・リポジトリ」、「コンテンツ・リポジトリのデータ・コントロール」の順に選択し、「OK」をクリックします。

「接続名」リストで接続の名前が選択された状態で、「コンテンツ・リポジトリのデータ・コントロールの作成」ダイアログが表示されます。

注意:

リソース・パレットでリポジトリ接続を作成した場合、リソース・パレットで接続を右クリックし「データ・コントロールの作成」を選択します。リソース・パレットから「データ・コントロール」パネルに、必要な接続をドラッグ・アンド・ドロップできます。

新しい接続を追加するには、「コンテンツ・リポジトリ接続を新規に作成します」アイコンをクリックし、「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスを表示します。詳細は、第26.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から導出されます。特定リポジトリの操作性をカスタマイズするために、基本タイプから追加ノード・タイプを導出できます。

27.2.2 コンテンツ・リポジトリのデータ・コントロールを構成する場合の処理

データ・コントロールが正常に構成されると、「データ・コントロール」パネルに表示されます。「データ・コントロール」パネルを開くと、図27-1に示すような新しいデータ・コントロールのメソッド、パラメータおよび操作の階層リストが表示されます。「データ・コントロール」パネルの使用の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のFusion WebアプリケーションでのOracle ADFモデルの使用に関する項を参照してください。

図27-1 「データ・コントロール」パネル - Content Server

「図27-1 「データ・コントロール」パネル - Content Server」の説明

表27-8に、データ・コントロールのアイコンおよびオブジェクト階層を示します。

表27-8 「データ・コントロール」パネルのアイコンおよびオブジェクト階層

アイコン

名前

説明

作成する対象

データ・コントロール

データ・コントロールを表します。UIコンポーネントを作成するためにデータ・コントロール自体を使用できませんが、その下のリストに含まれるいずれかの子オブジェクトを使用できます。ビジネス・サービスの定義方法に応じて、複数のデータ・コントロールが存在する場合があります。

他のオブジェクトのコンテナとして機能するもので、何かを作成するためには使用されません

メソッド

パラメータを受け入れ、ビジネス・ロジックを実行し、オプションで単一の値、構造体またはそれらのコレクションを返すことができるデータ・コントロールまたはその公開された構造体の操作を表します

コマンドのコンポーネント

パラメータを受け入れるメソッド(コマンド・コンポーネントおよびパラメータ化されたフォーム)

メソッドの戻りオブジェクト

カスタム・メソッドによって返されるオブジェクトを表します。返されるオブジェクトは、単一の値またはコレクションです。

メソッドの戻りオブジェクトは、それを返すメソッドの下の子として示されます。メソッドの戻りオブジェクトの下の子として表示されるオブジェクトは、該当コレクションの属性、親コレクションに関連するアクションを実行する他のメソッド、および親コレクション上で実行可能な操作です。

単一値(テキスト・フィールドおよび選択リスト)

コレクション(フォーム、表、ツリーおよび範囲ナビゲーション・コンポーネント)

単一値のメソッド戻りオブジェクトがドロップされた場合、メソッドはフレームワークによって自動的に起動されません。またユーザーは、実行可能プログラムとして起動アクションを作成するか、メソッドを起動するボタンとして対応メソッドをドロップする必要があります。

属性

オブジェクト内の個別データ要素を表します(行内の属性など)。属性は、それが属するコレクションまたはメソッド戻りオブジェクトの下に子として示されます。

ビュー・オブジェクトに含まれていた属性のみがコレクションの下に表示されます。ビュー・オブジェクトが1つ以上のエンティティ・オブジェクトに結合する場合、そのビュー・オブジェクトのコレクションには基礎となるすべてのエンティティ・オブジェクトからの選択された属性が含まれます。

ラベル、テキスト・フィールド、日付および選択リストのコンポーネント

操作

親オブジェクト上でアクションを実行する組込みデータ・コントロール操作を表します。データ・コントロール操作は、コレクションまたはメソッドの戻りオブジェクト、およびルート・データ・コントロール・ノードの下にある「操作」フォルダに位置します。特定のコレクションまたはメソッドの戻りオブジェクトの子である操作はそのオブジェクトに対してのみ動作するのに対して、データ・コントロール・ノード下にある操作はデータ・コントロール内のすべてのオブジェクトに対して動作します。

操作に1つ以上のパラメータが必要である場合、操作の下にある「パラメータ」フォルダに示されます。

ボタンやリンクなどのUIコンポーネント

パラメータ

パラメータが示されているメソッドまたは操作によって宣言されたパラメータ値を表します。パラメータは、メソッドまたは操作の下にある「パラメータ」フォルダに示されます。

ラベル、テキストおよび選択リストのコンポーネント

次のファイル(図27-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: このファイルは、コレクションに対する標準操作を定義します。

図27-2 「プロジェクト」パネル - 「ポータル」プロジェクト

「図27-2 「プロジェクト」パネル - 「ポータル」プロジェクト」の説明

27.3 コンテンツ・リポジトリ・データ・コントロールの編集

この項では、第27.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」の説明に従って構成したコンテンツ・データ・コントロールを編集するための一般的な手順を示します。

コンテンツ・データ・コントロールを編集するには:

1. Oracle JDeveloperで、コンテンツ・データ・コントロールが含まれるアプリケーションに移動します。

2. 「データ・コントロール」ペインで、編集するデータ・コントロールを右クリックし、図27-3に示すように「定義の編集」を選択します。図27-4に示す「コンテンツ・リポジトリのデータ・コントロールの編集」ダイアログが表示されます。

図27-3 データ・コントロールの編集

「図27-3 データ・コントロールの編集」の説明

図27-4 「コンテンツ・リポジトリのデータ・コントロールの編集」ダイアログ

「図27-4 「コンテンツ・リポジトリのデータ・コントロールの編集」ダイアログ」の説明

3. 別の接続を選択するには、「接続名」リストを使用します。

4. 接続を追加するには、「コンテンツ・リポジトリ接続を新規に作成します」アイコンをクリックし、「コンテンツ・リポジトリ接続の作成」ダイアログを表示します。構成パラメータの詳細は、作成する接続のタイプに応じて、第26.2項「コンテンツ・リポジトリ接続の構成」で対応する項を参照してください。

5. 既存の接続を編集するには、「選択したコンテンツ・リポジトリ接続を編集します」アイコンをクリックし、「コンテンツ・リポジトリ接続の編集」ダイアログを表示します。構成パラメータの詳細は、変更する接続のタイプに応じて、第26.2項「コンテンツ・リポジトリ接続の構成」で対応する項を参照してください。

6. カスタム属性を追加するには「カスタム属性」ボックスの「新規属性の追加」アイコンを、削除するには「選択された属性の削除」アイコンを使用します。

7. 「OK」をクリックして変更を適用します。

27.4 コンテンツ・リポジトリのデータ・コントロールの保護

コンテンツ・リポジトリ接続のセキュリティを有効にできます。詳細は、第68章「WebCenter Portal: Frameworkアプリケーションの保護」を参照してください。

27.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アプリケーションでのOracle ADFモデルの使用に関する項を参照してください。

この項の例では、次のデータ・コントロール・メソッドを使用しています。

- getURI: リポジトリ・フォルダにテキスト・リンクおよびクリック可能イメージ・リンクを追加します。

- getItems: ADF表およびツリーにリポジトリ・コンテンツを公開します。

- searchおよびadvancedSearch: 検索条件に一致するリポジトリのアイテムを表示します。

この項には次のサブセクションが含まれます:

- 第27.5.1項「リンクとしてコンテンツを公開する方法」

- 第27.5.2項「実行時の処理」

- 第27.5.3項「表にコンテンツを公開する方法」

- 第27.5.4項「実行時の処理」

- 第27.5.5項「ツリーにフォルダ・コンテンツを公開する方法」

- 第27.5.6項「実行時の処理」

- 第27.5.7項「コンテンツ・リポジトリに検索機能を追加する方法」

- 第27.5.8項「実行時の処理」

- 第27.5.9項「検索機能の使用時の必知事項」

27.5.1 リンクとしてコンテンツを公開する方法

この項では、ファイル・システムに格納されたファイルへのハイパーリンクの作成方法およびそれらをテキストおよびイメージ・リンクに変換する方法について説明します。「ADF実行リンク」およびgetURIメソッドを使用してテキスト・リンクを作成し、「ADF Faces」のイメージを使用してイメージ・リンクを作成します。

この項では、次の手順について説明します。

- 第27.5.1.1項「テキスト・リンクとしてのコンテンツの公開」

- 第27.5.1.2項「ドキュメントへリンクするクリック可能イメージの作成」

開始する前に:

1. 第26.2項「コンテンツ・リポジトリ接続の構成」の説明に従って、リポジトリ接続を構成します。

2. 第27.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」の説明に従って、データ・コントロールを構成します。

3. 第5.3項「ポータルへのページの追加」の説明に従って、ページを作成します。

27.5.1.1 テキスト・リンクとしてのコンテンツの公開

この項では、getURIメソッドのOracle ADF実行リンク・オプションを使用して、コンテンツをテキスト・リンクとして公開します。また、リポジトリの特定アイテムを表示するためのリンクを作成します。

テキスト・リンクとしてコンテンツを公開するには:

1. アプリケーション・ナビゲータで、ページ(myPage.jspxなど)をダブルクリックしてビジュアル・エディタ内に開きます。

2. 「データ・コントロール」パネルで、リポジトリ接続の下の「getURI (String)」メソッドを開き、「Return」を開きます。図27-5に示すように、URI属性が表示されます。

図27-5 getURIメソッドのURI属性

「図27-5 getURIメソッドのURI属性」の説明

3. テキスト・リンクを作成するには、「URI」属性を選択し、「構造」ウィンドウのh:formの下またはページ上にドロップします。図27-6に示すように、「作成」メニューから「リンク」を選択し、次に「ADF実行リンク」を選択します。
最初にノードをページにドロップした場合、「アクション・バインディングの編集」ダイアログが表示されます。

図27-6 getURIメソッドのOracle JDeveloperポップアップ・メニュー

「図27-6 getURIメソッドのOracle JDeveloperポップアップ・メニュー」の説明

4. 図27-7に示すように、pathパラメータの「値」フィールドに、リンクを作成するファイルのパスを入力します。/PlasmaNews.htmlなどのように、必ずスラッシュ(/)を入力してください。このパスを後で変更または削除するには、設計モードでノードの隣にある矢印アイコンをクリックし、ポップアップ・メニューから「バインディングに移動」を選択します。

図27-7 アクション・バインディングの編集

「図27-7 アクション・バインディングの編集」の説明

注意:

編集、パーソナライズ、カスタマイズおよび表示の権限を属性レベルで付与するには、第27.4項「コンテンツ・リポジトリのデータ・コントロールの保護」を参照してください。

5. 「OK」をクリックします。

6. ページを右クリックし、「実行」を選択します。ブラウザに、「アクション・バインディングの編集」ダイアログに入力したファイル・パスのURLが書式設定なしで表示されます。

7. デフォルトでは、リンクにはテキストgoLink1が表示されます。「構造」ウィンドウで、「af:goLink - goLink1」を選択し、「プロパティ・インスペクタ」のプロパティを表示します。

8. 図27-8に示すように、「Text」フィールドにPlasma Newsなどのリンク名を入力します。

図27-8 「実行リンク」のプロパティ

「図27-8 「実行リンク」のプロパティ」の説明

9. ページを右クリックし、「実行」を選択します。図27-9に示すように、ブラウザ・ウィンドウに新しいリンクを備えたページが表示されます。

図27-9 ブラウザでのADF実行リンク

「図27-9 ブラウザでのADF実行リンク」の説明

10. リンクをクリックして、適切なファイルが表示されることを確認します。

第27.5.1.2項「ドキュメントへリンクするクリック可能イメージの作成」で、このテキスト・リンクを拡張してイメージ・リンクにします。

同じJSFページに別のアイテムへのリンクを追加するには:

1. アプリケーション・ナビゲータで、ADF実行リンクを作成したページを右クリックし、「ページ定義に移動」を選択します。図27-10に示すように「設計」ビューに「ページ・データ・バインディング定義」が表示されます。

図27-10 ページ・データ・バインディング定義

「図27-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の下またはページ上にドロップします。図27-11に示すように、「作成」メニューから「リンク」を選択し、次に「ADF実行リンク」を選択します。

図27-11 getURIメソッドのOracle JDeveloperポップアップ・メニュー

「図27-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)からのコンテンツが表示されます。図27-12に、第27.5.1.1項「テキスト・リンクとしてのコンテンツの公開」の冒頭で追加した「Plasma News」リンクとともに、新しいリンク「FOD Logo」が表示されています。

図27-12 新しいテキスト・リンク

「図27-12 新しいテキスト・リンク」の説明

この手順に従うことで、必要なだけいくつでもリンクを追加できます。

27.5.1.2 ドキュメントへリンクするクリック可能イメージの作成

この項では、ADF FacesのImageオプションを使用してクリック可能イメージ(イメージ・オブジェクトをクリックすると、ドキュメントが表示される)としてドキュメントを公開します。

コンテンツをクリック可能イメージとして公開するには:

1. アプリケーション・ナビゲータで、ADF実行リンクを作成したページをダブルクリックして開きます。

2. 第27.5.1.1項「テキスト・リンクとしてのコンテンツの公開」の冒頭部分で作成したテキスト・リンクを変換するには、「構造」ウィンドウで「af:goLink - goLink1」を右クリックし、「参照」を選択します。「項目の挿入」ダイアログが表示されます。

3. 図27-13に示すように、「作成する項目を選択します」リストから「イメージ」を選択します。

図27-13 ADF Faces項目の挿入

「図27-13 ADF Faces項目の挿入」の説明

4. 「OK」をクリックします。「イメージの挿入」ダイアログが表示されます。

5. イメージ・リンクとして表示するイメージ・ファイル(plasma.jpgなど)を参照します。

6. 「終了」をクリックします。

7. ページを右クリックし、「実行」を選択します。図27-14に、サンプル出力を示します。

図27-14 ブラウザでのADFオブジェクト・イメージ・リンク

「図27-14 ブラウザでのADFオブジェクト・イメージ・リンク」の説明

27.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ノード・タイプのオプションのプロパティのためです。

27.5.3 表にコンテンツを公開する方法

この項では、getItemsデータ・コントロール・メソッドを使用して、表でファイルおよびフォルダ情報を公開します。この項では、次の手順について説明します。

- 第27.5.3.1項「読取り専用形式でのファイルおよびフォルダの表示」

- 第27.5.3.2項「実行リンクとしてのName属性の表示」

- 第27.5.3.3項「ファイルのみが表示される表の構成」

開始する前に:

1. 第26.2項「コンテンツ・リポジトリ接続の構成」の説明に従って、リポジトリ接続を構成します。

2. 第27.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」の説明に従って、データ・コントロールを構成します。

3. 第5.3項「ポータルへのページの追加」の説明に従って、ページを作成します。

27.5.3.1 読取り専用形式でのファイルおよびフォルダの表示

ここで、getItemsメソッドを使用して読取り専用のADF表を作成します。

読取り専用表でフォルダ・コンテンツを表示するには:

1. ページをビジュアル・エディタで開くために、アプリケーション・ナビゲータでダブルクリックします。

2. 図27-15に示すように、「データ・コントロール」パネルで、データ・コントロールの下の「getItems」メソッドおよび「Return」ノードを開きます。

図27-15 getItemsメソッドの「Return」ノード

「図27-15 getItemsメソッドの「Return」ノード」の説明

3. このデータ・コントロールを介して使用可能なすべてのファイルおよびフォルダがリストされる表を作成するには、「Return」ノードをページまたは「構造」ウィンドウの「af:form」の下にドロップします。図27-16に示すように、「作成」メニューから「表」を選択し、次に「ADF読取り専用表」を選択します。

図27-16 getItemsメソッドの「コンテキストの作成」メニュー

「図27-16 getItemsメソッドの「コンテキストの作成」メニュー」の説明

4. 図27-17に示すように、「表の列の編集」ダイアログで、「getItems.name値バインディング」の行を選択し、「ラベルの表示」に適切な値(Nameなど)を入力します。
path、URI、primaryTypeおよびlastModified属性に対してこの手順を繰り返します。name、Location、URLなどの新しい表示ラベルを入力し、「OK」をクリックします。

図27-17 表の列の編集

「図27-17 表の列の編集」の説明

5. 最初にノードをページにドロップした場合、「アクション・バインディングの編集」ダイアログが表示されます。
図27-18に示すように、「アクション・バインディングの編集」ダイアログで、コンテンツ・ディレクトリのパスをpathパラメータとして入力します。必ずスラッシュ(/)を入力してください。このパスを後で変更または削除するには、設計モードでノードの隣にある矢印アイコンをクリックし、ポップアップ・メニューから「バインディングに移動」を選択します。

typeパラメータは空白のままにしておきます。これは、表にファイルとフォルダの両方を表示することを示します。

図27-18 アクション・バインディングの編集

「図27-18 アクション・バインディングの編集」の説明

6. 「OK」をクリックします。図27-19に示すような表が、ページに表示されます。

図27-19 フォルダ・コンテンツを公開するための読取り専用表

「図27-19 フォルダ・コンテンツを公開するための読取り専用表」の説明

注意:

ページ・キャッシュのオンとオフを切り替えることができます。このためには、ページ定義を開き、「構造」ウィンドウで「実行可能ファイル」を開き、「getItemsIterator」を選択します。次に、プロパティ・インスペクタで、CacheResultsをtrueまたはfalseに適宜設定します。

7. ページを実行します。コンテンツ・ディレクトリで使用可能なすべてのファイルおよびフォルダのリストが表示されます。図27-20は、実行時にファイルとフォルダの両方を示す読取り専用表です。

図27-20 読取り専用表に表示されたファイルおよびフォルダ

「図27-20 読取り専用表に表示されたファイルおよびフォルダ」の説明

デフォルトでは、表にはファイルまたはフォルダの属性が読取り専用テキスト(af:outputText)として表示されます。次の項で、Name属性(name)を実行リンク(af:goLink)として表示する方法を説明します。

27.5.3.2 実行リンクとしてのName属性の表示

この項では、第27.5.3.1項「読取り専用形式でのファイルおよびフォルダの表示」で作成した表のName属性を、ADF実行リンク・コンポーネントを使用してリンクに変換します。また、「名前」列のみを表示するように表を構成します。

実行リンクとしてName属性を表示するには:

1. 「構造」ウィンドウ(図27-21)で、表の最初の列(af:column - Name)を開いて、デフォルトの表示形式「af:outputText - #{row.name}」を表示します。

図27-21 「名前」列のデフォルト書式設定

「図27-21 「名前」列のデフォルト書式設定」の説明

2. ページのリンク元ビューで、実行リンクを使用する「名前」列を変更します。リンクには名前が表示されますが、エントリのURIにリンクされています。
太字のaf:outputTextを置き換えます。

<af:column sortProperty="name" sortable="false"
headerText="#{bindings.Return.hints.name.label}" id="c2">
<af:outputText value="#{row.name}" id="ot1"/>
</af:column>

太字に示すようにaf:goLinkに置き換えます。

af:column sortProperty="name" sortable="false"
headerText="#{bindings.Return.hints.name.label}"
id="c2">
<af:goLink text="#{row.name}" id="goLink2"
destination="#{row.bindings.URI.inputValue}"/>
</af:column>

3. 「構造」ウィンドウで、「af:column - URL」を右クリックし、「削除」を選択します。

4. アプリケーション・ナビゲータでページを右クリックし、「実行」を選択します。図27-22に示すような、ハイパーリンク付きのファイルおよびフォルダ名のリストが表示されます。この図では、name属性がリンクとして示されています。「URI」列のリンクをクリックすると、対応するファイルまたはフォルダが開き、そのコンテンツが表示されます。

図27-22 ハイパーリンクとして表示されたフォルダ・コンテンツ

「図27-22 ハイパーリンクとして表示されたフォルダ・コンテンツ」の説明

5. ファイル名をクリックします。選択したファイルが、ブラウザ・ウィンドウに表示されます。

6. フォルダの名前をクリックすると、図27-23に示すように、フォルダのコンテンツが表示されます。

図27-23 フォルダのコンテンツ

「図27-23 フォルダのコンテンツ」の説明

「名前」列のみを表示するよう表を構成するには:

1. 「構造」ウィンドウの「af:table - t1」ノードで、「名前」列以外のすべての列を削除します。

2. 「af:table - t1」ノードをダブルクリックし、プロパティ・インスペクタを表示します。

3. 図27-24に示すように、「共通」タブの「ID」フィールドに名前(myFilesなど)を入力します。

図27-24 表のプロパティ - 「共通」タブ

「図27-24 表のプロパティ - 「共通」タブ」の説明

4. ページを実行して出力を表示します。他の行は設計時に「構造」ウィンドウから削除されたため、図27-25には表の列のみを表示しています。表の作成時にtypeパラメータを空白のままにしたため、この表はファイルとフォルダの両方を表示しています。

図27-25 1列のみの表に表示されたファイルおよびフォルダ

「図27-25 1列のみの表に表示されたファイルおよびフォルダ」の説明

次の項では、ファイルのみが表示されるように「名前」列を構成します。

27.5.3.3 ファイルのみが表示される表の構成

フォルダではなく、ファイルのみが表示されるように表を構成するには、type属性を使用します。

ファイルを表示するように表を構成するには:

1. ページを右クリックし、「ページ定義に移動」を選択します。

注意:

ページに表示されるアイテムの数を制御するために使用されるRangeSizeバインディング設定は、ページ定義ファイル内で、デフォルトで10に設定されています。この設定は、プロパティ・インスペクタで適宜変更できます。

2. 「概要」タブで、「バインディング」の「getItems」をダブルクリックします。「アクション・バインディングの編集」ダイアログが表示されます。

3. 「type」オプションは、nt:fileとnt:folderです。ファイルのみが表示されるように指定するには、図27-26に示すように、「値」列にnt:fileを入力し、「OK」をクリックします。

4. 図27-26 ファイルのみの表示

「図27-26 ファイルのみの表示」の説明

5. ここで、ページを実行します。列タイプがnt:fileのため、図27-27には1列のみの表にあるファイルのみを表示しています。

図27-27 1列のみの表に表示されたファイル

「図27-27 1列のみの表に表示されたファイル」の説明

27.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の両方を返すメソッドを実行します。

27.5.5 ツリーにフォルダ・コンテンツを公開する方法

この項では、getItemsメソッドを使用して、コンテンツを階層ツリー形式で公開します。この項では、次の手順について説明します。

- 第27.5.5.1項「読取り専用形式でのファイルおよびフォルダの表示」

- 第27.5.5.2項「ハイパーリンクとしてのファイル名の表示」

開始する前に:

1. 第26.2項「コンテンツ・リポジトリ接続の構成」の説明に従って、リポジトリ接続を構成します。

2. 第27.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」の説明に従って、データ・コントロールを構成します。

3. 第5.3項「ポータルへのページの追加」の説明に従って、ページを作成します。

27.5.5.1 読取り専用形式でのファイルおよびフォルダの表示

この項では、コンテンツをツリー形式で表示します。

コンテンツをツリー形式で表示するには:

1. アプリケーション・ナビゲータで、ページをダブルクリックしてデザイン・ビューで開きます。

2. 図27-28に示すように、「データ・コントロール」で、該当するデータ・コントロールの下のgetItemsメソッドを展開します。

図27-28 getItemsメソッドのパラメータ

「図27-28 getItemsメソッドのパラメータ」の説明

3. コンテンツをADFツリーとして表示するには、「Return」ノードを選択してページにドラッグします。図27-29に示すように、「作成」メニューから「ツリー」を選択し、次に「ADFツリー」を選択します。
最初にノードをページにドロップした場合、「アクション・バインディングの編集」ダイアログが表示されます。

図27-29 Oracle JDeveloperのgetItemsの「作成」メニュー

「図27-29 Oracle JDeveloperのgetItemsの「作成」メニュー」の説明

4. ベース・パスの下の要素をすべて表示するツリーを作成するには、図27-30に示すように、pathパラメータにスラッシュ(/)を入力します。このパスを後で変更または削除するには、設計モードでノードの隣にある矢印アイコンをクリックし、ポップアップ・メニューから「バインディングに移動」を選択します。
ファイルとフォルダの両方を表示するために、typeは空白にしておきます。

図27-30 「アクション・バインディングの編集」ダイアログ

「図27-30 「アクション・バインディングの編集」ダイアログ」の説明

5. 「OK」をクリックします。「ツリー・バインディングの編集」ダイアログが表示されます。

6. 実行時のアイテムの名前、パスおよびタイプを表示するには、「使用可能な属性」で適切な属性を選択し、「表示属性」リストに移動します。

7. 図27-31に示すように、「ツリー・レベル・ルール」ボックスで、「ルールの追加」アイコンをクリックして「アイテム」を選択し、ルールを作成します。これによって、ツリーでその子アイテムを検索できます。

図27-31 ツリー・バインディングの編集

「図27-31 ツリー・バインディングの編集」の説明

8. 「OK」をクリックします。図27-32に示すように、ツリーがページに表示されます。

図27-32 フォルダ・コンテンツをナビゲートするためのツリー

「図27-32 フォルダ・コンテンツをナビゲートするためのツリー」の説明

9. ページを実行して、結果を表示します。
ページがブラウザ・ウィンドウに表示されると、データ・コントロールを介して使用可能なファイルおよびフォルダのリストが表示されます。図27-33は、JSFページにドロップされたADFツリーに基づく読取り専用形式のファイルおよびフォルダのツリーを示しています。ブランチを開くと、このサブディレクトリ内のコンテンツが表示されます。

注意:

デフォルトでは、レンジ・サイズは10です。ツリーに表示されるアイテムの数を変更するには、ページ定義ファイル(namePageDef.xml)でデータ・コントロールに対するRangeSizeプロパティを編集します。

図27-33 ツリーで表示されたフォルダ・コンテンツ

「図27-33 ツリーで表示されたフォルダ・コンテンツ」の説明

デフォルトでは、ツリーにはファイルおよびフォルダの名前が読取り専用テキストとして表示されます。次の項では、ファイル名へのハイパーリンクを作成する方法について説明します。また次の項では、ツリーでの移動に必要になるので、フォルダ名は読取り専用テキストのままにします。

27.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」をクリックします。
図27-34に示すように、「構造」ウィンドウの「f:facet - nodeStamp」の下にスイッチャが追加されます。

図27-34 Switcherコンポーネントに変換された出力テキスト

「図27-34 Switcherコンポーネントに変換された出力テキスト」の説明

5. プロパティ・インスペクタが表示されていない場合、「af:switcher」をダブルクリックして表示します。

6. 「共通」タブの「FacetName」フィールドで、式#{node.primaryType}を入力します。

7. 「構造」ウィンドウで、スイッチャのファセットを2つ挿入します。「af:switcher」を右クリックし、「af:switcherの中に挿入」→「ファセット」の順に選択します。「ファセットの挿入」ダイアログが表示されます。

8. 最初のファセットにnt:folderという名前を付け、「OK」をクリックします。フォルダ名に追加の書式設定は必要ないので、ノード名はプレーン・テキストとして表示できます。2番目のファセットnt:fileに名前を付けます。このファセットは、図27-35のように表示されます。

図27-35 2つのファセットを持つSwitcherコンポーネント

「図27-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. ページを実行します。図27-36では、af:treeの下にあるスイッチャのnt:fileファセットがリンク(node.URI)に変換されたので、ファイル名がハイパーリンクとして表示されています。リンクをクリックすると、対応するアイテムが表示されます。

図27-36 ハイパーリンクとしてのファイル名で構成されたツリー

「図27-36 ハイパーリンクとしてのファイル名で構成されたツリー」の説明

27.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メソッドが再度起動されます。

27.5.7 コンテンツ・リポジトリに検索機能を追加する方法

この項では、2つの例をあげて、統合されたコンテンツに対して標準検索機能および拡張検索機能を追加する方法を示します。標準検索では、ユーザーは、名前や特定の場所にあるコンテンツ・フラグメントに基づいてコンテンツを検索できます。拡張検索では、ユーザーはコンテンツの属性値によって検索できます。

この項の内容は、次のとおりです。

- 第27.5.7.1項「標準検索機能の追加」

- 第27.5.7.2項「拡張検索機能の追加」

開始する前に:

1. 第26.2項「コンテンツ・リポジトリ接続の構成」の説明に従って、リポジトリ接続を構成します。

2. 第27.2項「JCRアダプタ対応のコンテンツ・データ・コントロールの構成」の説明に従って、データ・コントロールを構成します。

3. 第5.3項「ポータルへのページの追加」の説明に従って、ページを作成します。

27.5.7.1 標準検索機能の追加

この項では、標準検索機能をページで有効にします。これによって、ワイルドカード(%)検索が行えるようになります。

検索機能を有効にするには:

1. アプリケーション・ナビゲータで、ページをダブルクリックして開きます。

2. 「データ・コントロール」パネルで、「search」ノードを開きます。

3. ユーザーがボタンをクリックして検索を実行できるようにするには、「search」ノードをページにドラッグ・アンド・ドロップします。「作成」メニューから、「パラメータ」、「ADFパラメータ・フォーム」の順に選択します。「フォーム・フィールドの編集」ダイアログが表示されます。

4. 「OK」をクリックします。図27-37に示すように、ADFパラメータ・フォームがページに追加されます。

図27-37 「デザイン・ビュー」での「ADFパラメータ・フォーム」

「図27-37 「デザイン・ビュー」での「ADFパラメータ・フォーム」」の説明

5. 検索結果を読取り専用表に表示できるようにするには、「Return」ノードをページにドラッグ・アンド・ドロップします。「作成」メニューで「表」を選択し、「ADF読取り専用表」を選択します。「表の列の編集」ダイアログが表示されます。

6. 「OK」をクリックします。図27-38のような表が表示されます。

図27-38 4つの列が含まれる表 - 検索

「図27-38 4つの列が含まれる表 - 検索」の説明

7. このページを実行し、「search_path」で/を指定し、「namePattern」で%jpg%を指定します。図27-39に示すように、リポジトリのルートに格納されているすべての.jpgファイルが表示されます

図27-39 .jpgファイルの検索結果

「図27-39 .jpgファイルの検索結果」の説明

27.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}が、図27-40に示すように追加されるので、「OK」をクリックします。

図27-40 「変数」ダイアログ - 条件

「図27-40 「変数」ダイアログ - 条件」の説明

14. 「アクション・バインディングの編集」ダイアログで「OK」をクリックします。

15. 「データ・コントロール」パネルで、「advancedSearch」ノードを開きます。「Return」をドラッグし、ページの「advancedSearch」ADFボタンの後にドロップします。「作成」メニューで「表」を選択し、「ADF読取り専用表」を選択します。

16. 「表の列の編集」ダイアログで、必要に応じて列のラベルを編集します。次に、「OK」をクリックします。図27-41のような「設計」ビューが表示されます。

図27-41 拡張検索 - 「設計」ビュー

「図27-41 拡張検索 - 「設計」ビュー」の説明

17. プロパティ・インスペクタの「動作」タブで、ContentDeliveryプロパティをimmediateに設定します。

18. ブラウザでページを表示するには、アプリケーション・ナビゲータでページを右クリックし、「実行」を選択します。ブラウザにadvancedSearchページが表示されます。

19. 「最終変更」日付を入力して「advancedSearch」ボタンをクリックします。図27-42に示すように、該当日の後に変更されたファイルが表示されます。

図27-42 拡張検索の結果

「図27-42 拡張検索の結果」の説明

27.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')]

27.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アダプタでは翻訳はサポートされていないため、コンテンツはページ・グループの基本言語でのみ返されます。基本言語が異なる複数のページ・グループにわたる検索は、サポートされていません。

28 コンテンツ・プレゼンタ表示テンプレートの作成

コンテンツ・プレゼンタ・タスク・フローによって、権限のあるユーザーはIT部門やソフトウェア開発者のサポートなしで、Content Serverからコンテンツを取得し、WebCenter Portalアプリケーションでリアルタイムでそれを表示できます。たとえば、最新のプレス・リリースのリストを表示して、ユーザーがそれらをブラウズし、クリックして読めるようにします。ポータルには、イメージ(写真や図表など)やテキスト・コンテンツを配置または追加できます。

注意:

Content Presenterでは、Content Serverベースのコンテンツのみを使用できます。他のリポジトリ接続タイプは使用できません。

Content Presenterは、選択された表示テンプレートを使用してコンテンツをレンダリングします。この章では、コンテンツ・プレゼンタ表示テンプレートの作成に主な焦点を当てます。特定のコンテンツ・レンダリング要件に合せて、または独自のカスタム・コンテンツ・プロパティに対応する、コンテンツ・プレゼンタ・テンプレートを作成できます。

この章の内容は、次のとおりです。

- 第28.1項「アプリケーションへのコンテンツ・プレゼンタの追加」

- 第28.2項「コンテンツ・プレゼンタ表示テンプレートについて」

- 第28.3項「デフォルト表示テンプレートの使用」

- 第28.4項「コンテンツ・プレゼンタ表示テンプレートの作成」

- 第28.5項「コンテンツ・プレゼンタ表示テンプレートの使用」

- 第28.6項「実行時の処理」

- 第28.7項「コンテンツ・プレゼンタ表示テンプレートのパフォーマンスの考慮点」

28.1 アプリケーションへのコンテンツ・プレゼンタの追加

設計時または実行時にコンテンツ・プレゼンタ・タスク・フローを追加できます。設計時のJDevを使用したコンテンツ・プレゼンタの追加の詳細は、第30章「ポータル・ページへのコンテンツ・タスク・フローおよびドキュメント・コンポーネントの追加」を参照してください。実行時のコンテンツ・プレゼンタの追加および使用の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のコンテンツ・プレゼンタを使用したコンテンツの公開に関する項を参照してください。

28.2 コンテンツ・プレゼンタ表示テンプレートとは

コンテンツ・プレゼンタ表示テンプレートは、コンテンツ・プレゼンタがポータル・ページ上でコンテンツ・アイテムをレンダリングする方法を定義するJSFFファイル(JSFページ・フラグメント)です。WebCenterにはデフォルトの表示テンプレートがいくつか装備されており、これらを使用してすぐに作業を開始できるほか、独自のテンプレートを作成できます。

ヒント:

サンプル表示テンプレートは$ORACLE_HOME/jdeveloper/webcenter/samples/contentpresenterに格納されています。これらのサンプル・ファイルは、Oracle JDeveloperに対するWebCenter Portalの拡張機能の一部としてインストールされています。

表示テンプレートでは充実したADFコンポーネントをすべて使用できるので、コンテンツを表示するために堅牢で人目を引くテンプレートをすばやく簡単に作成できます。ただし、テンプレートでこれらのコンポーネントを使用する必要はありません。

コンテンツ・プレゼンタ表示テンプレートでは、単一コンテンツ・アイテム、複数コンテンツ・アイテムまたは双方の組合せを処理できます。たとえば、複数コンテンツ・アイテムのテンプレートで各アイテムのタブをレンダリングしてから、単一アイテムのテンプレートをコールして選択アイテムの詳細をレンダリングできます。

各コンテンツ・アイテムは、コンテンツ・サーバーのリポジトリで定義された特定コンテンツ・タイプに関連付けらます。コンテンツ・タイプはコンテンツ・アイテムのプロパティを定義します。コンテンツ・タイプはコンテンツ・サーバーのプロファイル定義とSite Studioのリージョン定義にマップできます。

ヒント:

コンテンツ・プレゼンタADFテンプレートを使用して、Site Studioリージョン・テンプレートではなくSite StudioとWebCenter Portalを統合することをお薦めします。推奨フローは次のとおりです。

- Site Studioでリージョン定義を開発します。

- JDeveloperを使用して、リージョン定義を参照するADFテンプレートを開発します。

- コンテンツ・プレゼンタを使用して、コンテンツをレンダリングし、ユーザーがコンテンツを提供できるようにします。

タイプはコンテンツ・サーバー上で作成されます。コンテンツ・プレゼンタ表示テンプレートの開発者は、選択されたコンテンツ・アイテムのページ上での表示方法を定義できるように、関連付けられたコンテンツ・タイプに定義されたプロパティの名前を知っておくことが必要です。

ヒント:

Content Serverで定義されている既存コンテンツ・タイプのプロパティを判断する1つの方法は、WebCenter Portal: Spacesの「コンテンツ・プレゼンタ構成」ダイアログを使用する方法です。この方法の詳細は、第28.4.5項「コンテンツ・タイプのプロパティ名の発見」を参照してください。

実行時に権限のあるエンド・ユーザーは、「コンテンツ・プレゼンタ構成」ダイアログで表示テンプレートを選択できます。

28.3 デフォルト表示テンプレートの使用

WebCenter Portalには、デフォルトのコンテンツ・プレゼンタ表示テンプレートがいくつか装備されています。こうした事前に構築されているテンプレートは、単一コンテンツ・アイテムと複数コンテンツ・アイテムを表示するためのオプションを提供します。

たとえば、デフォルトのドキュメント詳細ビュー・テンプレートには、作成日付、変更日付、作成者のユーザー名、変更者のユーザー名およびパスを含む単一のコンテンツ・アイテムの詳細情報が表示されます。図28-0は、実行時にこのテンプレートで表示されるコンテンツ・アイテムを示しています。

図28-1 デフォルトのドキュメント詳細ビュー表示テンプレート

「図28-1 デフォルトのドキュメント詳細ビュー表示テンプレート」の説明

複数コンテンツ・アイテムの表示には、複数のコンテンツ・アイテムをアコーディオン形式で表示するアコーディオン・ビューを始め、いくつかのオプションが提供されています。この形式では、図28-2に示すように各アイテムを展開して詳細を表示できます。アコーディオン・ビューでは、常に1つのアイテムが開きます。つまり、すべてのアイテムを閉じることはできません。いつでも、どの単一アイテムを開くかのみを変更できます。

図28-2 アコーディング・ビュー表示テンプレート

「図28-2 アコーディング・ビュー表示テンプレート」の説明

デフォルトの表示テンプレートの全リストは、第30.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。

ヒント:

コンテンツ・プレゼンタ表示テンプレートを作成する場合、デフォルト・テンプレートの1つをコピーして変更することをお薦めします。

28.4 コンテンツ・プレゼンタ表示テンプレートの作成

デフォルトの表示テンプレート(第28.3項「デフォルト表示テンプレートの使用」を参照)がニーズを満たさない場合、カスタムのコンテンツ・プレゼンタ・テンプレートを定義できます。

この項の内容は、次のとおりです。

- 第28.4.1項「概要」

- 第28.4.2項「単一アイテムの表示テンプレートの定義」

- 第28.4.3項「複数アイテムの表示テンプレートの定義」

- 第28.4.4項「EL式を使用したコンテンツ・アイテム情報の取得」

- 第28.4.5項「コンテンツ・タイプのプロパティ名の発見」

28.4.1 概要

コンテンツ・プレゼンタ表示テンプレートの定義方法は、ニーズに応じて異なります。一般的には、コンテンツの特定単一アイテムについて表示テンプレートを定義してから、単一アイテムの表示テンプレートへのコールを含む複数コンテンツ・アイテムの表示テンプレートを定義します。

テンプレート定義には、次のように他の表示テンプレートへのコールを含めることができます。

- 単一コンテンツ・アイテムの表示テンプレートは、別の単一コンテンツ・アイテムの表示テンプレートをコールできます。

- 複数コンテンツ・アイテムの表示テンプレートは、単一コンテンツ・アイテムの表示テンプレートをコールできます(次の例を参照)。

- 複数コンテンツ・アイテムの表示テンプレートは、別の複数コンテンツ・アイテムの表示テンプレートをコールできます。

コンテンツ・プレゼンタ表示テンプレートを作成する際の基本的なタスクは、次のとおりです。

- 単一アイテムと複数アイテムのいずれの表示テンプレートを作成するかを決定します。第28.4.2項「単一アイテムの表示テンプレートの定義」と第28.4.3項「複数アイテムの表示テンプレートの定義」を参照してください。

- コンテンツ・アイテムによってどのような情報を表示するかを決定します。WebCenter Portalは、この情報を取得および表示するためにデザインされた一連のEL式を提供しています。付録F「式言語式」と第28.4.4項「EL式を使用したコンテンツ・アイテム情報の取得」を参照してください。

- テンプレートのルック・アンド・フィールをデザインします。表示テンプレートでは、標準JSFF構造に加え、ADFコンポーネントを使用できます。『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。

- ポータル・リソースとしてテンプレートをエクスポートします。第28.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」を参照してください。

28.4.2 単一アイテムの表示テンプレートの定義

コンテンツ・プレゼンタ表示テンプレートを作成する単一コンテンツ・アイテムの例を次に示します。

- ページ上で特定ルック・アンド・フィールで表示する個々のアイテム。

- 特定タイプのアイテムの異なるビュー(例: 記事の短いビューと詳細ビュー)。

- 類似アイテムの異なるバージョン(例: グループ別に異なるプロパティ・セットを使用して異なる方法でフォーマットされるプレス・リリース)。

単一コンテンツ・アイテムの表示テンプレートの定義では、表28-1にリストするJSPタグを使用します。

表28-1 単一コンテンツ・アイテムのコンテンツ表示テンプレートのタグ

JSPタグ

説明

例

contentTemplateDef

必須。単一コンテンツ・アイテムのテンプレートを定義します。

属性:

var - この表示テンプレートによりレンダリングされるコンテンツ・ノードを指定します。テンプレート定義コードで、第28.4.4.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で新しいFrameworkアプリケーションを開くまたは作成し、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. コンポーネント・パレット最上部のドロップダウン・リスト(図28-3)で、次の手順に従います。

- 表示テンプレート・タグのリストは、「WebCenterコンテンツ表示テンプレート」を選択します。

- renderPropertyタグは、「WebCenterコンテンツ管理フェース」を選択します。

図28-3 コンポーネント・パレットのコンテンツ表示テンプレート・タグ

「図28-3 コンポーネント・パレットのコンテンツ表示テンプレート・タグ」の説明

4. 「ソース」ビューで、必要な表示テンプレート・タグをコンポーネント・パレットからページにドラッグ・アンド・ドロップして、テンプレートを定義します。各タグおよび必須のパラメータ値の情報は、表28-1を参照してください。

例28-1および例28-2に、単一コンテンツ・アイテム表示テンプレートの定義のサンプルを示します。これらの例のユース・ケースでは、特定のス類のドキュメント(プレス・リリース)が、会社内の2つの異なる部門によって作成され、それぞれの部門で独自のコンテンツ・タイプとプロパティを定義しています。これらのサンプル・コンテンツ・プレゼンタ表示テンプレートでは、これらの2つの異なるコンテンツ・タイプを一貫した方法で表示できます。

例28-1に示すテンプレートは、プレス・リリース・ドキュメントの見出しを表すxHeadingという名前のプロパティと、そのドキュメントの場所を表すxDestinationUrlというプロパティを使用するプレス・リリースを処理します。所定のコンテンツ・タイプに対するこうしたプロパティ名の取得方法を学ぶには、第28.4.5項「コンテンツ・タイプのプロパティ名の発見」を参照してください。

例28-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>

例28-2に示すテンプレートは、プレス・リリース・ドキュメントの見出しを表すdDocTitleという名前のプロパティと、そのドキュメントの場所を表すxLinkUrlというプロパティを使用するプレス・リリースを処理します。

例28-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>

28.4.3 複数アイテムの表示テンプレートの定義

コンテンツ・プレゼンタ表示テンプレートを作成する複数コンテンツ・アイテムの例を次に示します。

- 1つのページに表示する一群の類似アイテム(例: 本のリストや写真による従業員名簿)。

- 問合せ結果(例: 先週変更された全ドキュメント)。

- Content Serverフォルダの全ドキュメントのリスト。

複数コンテンツ・アイテムの表示テンプレートの定義では、表28-2にリストするJSPタグを使用します。

表28-2 複数コンテンツ・アイテムのコンテンツ表示テンプレートのタグ

JSPタグ

説明

例

contentListTemplateDef

必須。複数コンテンツ・アイテムのテンプレートを定義します。

属性:

var - この表示テンプレートによりレンダリングされるコンテンツ・ノードを指定します。テンプレート定義コードで、第28.4.4.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. 第28.4.2項「単一アイテムの表示テンプレートの定義」の手順1から3の説明に従って、JDeveloperでJSFFファイルを作成し、コンポーネント・パレットを開きます。

2. 「ソース」ビューで、必要な表示テンプレート・タグをコンポーネント・パレットからページにドラッグ・アンド・ドロップします。各タグおよび必須のパラメータ値の情報は、表28-2を参照してください。

例28-3は、複数コンテンツ・アイテムの表示テンプレートのサンプル定義を示しています。

例28-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>

28.4.4 EL式を使用したコンテンツ・アイテム情報の取得

この項では、コンテンツ・アイテムに関する特定情報を取得および表示するためにコンテンツ・プレゼンタ表示テンプレートの定義で使用できるEL式について説明します。

第28.4.2項「単一アイテムの表示テンプレートの定義」および第28.4.3項「複数アイテムの表示テンプレートの定義」で説明したコンテンツ・プレゼンタ表示テンプレートを定義するときに、次の表で説明するEL式を使用します。これらの式は、表28-1および表28-2で説明したJSPタグとともに使用されます。

この項には次のサブセクションが含まれます:

- 第28.4.4.1項「コンテンツ・アイテムの基本情報の取得」

- 第28.4.4.2項「コンテンツ・アイテムのプロパティおよび値の操作」

- 第28.4.4.3項「コンテンツ・アイテムのアイコンおよびURLの操作」

- 第28.4.4.4項「グループ・スペース情報の操作」

28.4.4.1 コンテンツ・アイテムの基本情報の取得

表28-3にリストされているEL式を使用すると、表示テンプレートでコンテンツ・アイテムの基本情報を表示できます。

表28-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}のショートカットです。

28.4.4.2 コンテンツ・アイテムのプロパティおよび値の操作

表28-4および表28-5で説明するEL式を使用して、コンテンツ・アイテムのノード・プロパティおよびプロパティ値でアクションを実行します。

ヒント:

所定のコンテンツ・タイプに定義されたプロパティ名を判断するには、第28.4.5項「コンテンツ・タイプのプロパティ名の発見」を参照してください。

表28-4 コンテンツ・アイテムのノード・プロパティのEL式

EL式

説明

#{node.propertyMap['myProp']'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)が付きます。第28.4.7項「カスタム・ビューにおけるSite Studioリージョン要素の参照」も参照してください。

表28-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}

28.4.4.3 コンテンツ・アイテムのアイコンおよびURLの操作

表28-6および表28-7に、コンテンツ・アイテムとプロパティに関連付けられたアイコンおよびURLを操作するEL式を示します。

表28-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}" />

表28-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"/>

28.4.4.4 グループ・スペース情報の操作

表28-8および表28-9に、コンテンツ・プレゼンタ・テンプレートでのグループ・スペース情報の操作に使用できるEL式を示します。

表28-8 基本グループ・スペース情報のEL式

EL式

説明

#{spaceContext.currentSpace.metadata.createdBy}

#{spaceContext.space[spaceName].metadata.createdBy}

現在のグループ・スペースまたは指定したグループ・スペースを作成したユーザーを返します。

#{spaceContext.currentSpace.metadata.creationDate}

#{spaceContext.space[spaceName].metadata.creationDate}

現在のグループ・スペースまたは指定したグループ・スペースが作成された日時を表すjava.util.Calendarオブジェクトを返します。

#{spaceContext.currentSpace.metadata.customAttributes[attributeName]}

#{spaceContext.space[spaceName].metadata.customAttributes[attributeName]}

スペースの特定のカスタム属性の値を返します。attributeNameは属性の名前です。

#{spaceContext.currentSpace.metadata.defaultLanguage}

#{spaceContext.space[spaceName].metadata.defaultLanguage}

現在のスペースまたは指定したスペースのデフォルト言語を返します。

#{spaceContext.currentSpace.metadata.description}

#{spaceContext.space[spaceName].metadata.description}

現在のスペースに関連付けられた説明と表示名を、スペースが作成された言語で返します。スペース名が翻訳されている場合、翻訳された名前は表示されません。

例: #{spaceContext.space['FinanceProject'].metadata.description}

財務活動に従事するすべての複合チームを評価します。

#{spaceContext.currentSpace.metadata.displayName}

#{spaceContext.space[spaceName].metadata.displayName}

現在のスペースまたは指定したスペースに関連付けられた表示名を、スペースが作成された言語で返します。スペース名が翻訳されている場合、スペースが作成された名前が表示されます。

例:

Web20Spaceというグループ・スペースの表示名が「Web 2.0 Space」である場合:

#{spaceContext.space['Web20Space'].metadata.displayName}

は、「Web 2.0 Space」と評価されます。

#{spaceContext.currentSpace.metadata.guid}

#{spaceContext.space[spaceName].metadata.guid}

現在のスペースまたは指定したスペースに関連付けられた一意のIDを返します。

#{spaceContext.space[spaceName].metadata.icon}

#{spaceContext.currentSpace.metadata.icon}

現在のスペースまたは指定したスペースに関連付けられたアイコンへのURLを返します。

#{spaceContext.currentSpace.metadata.keywords}

#{spaceContext.space[spaceName].metadata.keywords}

現在のスペースまたは指定したスペースに関連付けられた検索可能なキーワードのカンマ区切りリストを返します。

#{spaceContext.currentSpace.metadata.lastUpdatedDate}

#{spaceContext.space[spaceName].metadata.lastUpdatedDate}

現在のグループ・スペースまたは指定したグループ・スペースが最後に更新された日時を表すjava.util.Calendarオブジェクトを返します。

#{spaceContext.space[spaceName].metadata.logo}

#{spaceContext.currentSpace.metadata.logo}

現在のスペースまたは指定したスペースのロゴに関連付けられたイメージへのパスを返します。

#{spaceContext.currentSpace.metadata.name}

#{spaceContext.space[spaceName].metadata.name}

通常、スペースのバックエンドでプリティURLで使用される、現在のスペースまたは指定したスペースの名前を返します。

#{spaceContext.currentSpace.metadata.groupSpaceURI}

#{spaceContext.space[spaceName].metadata.groupSpaceURI}

現在のスペースまたは指定したスペースのプリティURLを返します。

#{spaceContext.currentSpace.metadata.closed}

#{spaceContext.space[spaceName].metadata.closed}

スペースが閉じられているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.discoverable}

#{spaceContext.space[spaceName].metadata.discoverable}

ユーザーがスペースの存在を検索または「マイ・スペース」のリストからの取得によって検出できるかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.offline}

#{spaceContext.space[spaceName].metadata.offline}

スペースが遮断されているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.publishRSS}

#{spaceContext.space[spaceName].metadata.publishRSS}

スペースがRSSフィードを公開しているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.selfRegistration}

#{spaceContext.space[spaceName].metadata.selfRegistration}

ユーザーによるスペースのサブスクライブが許可されているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.unsubscriptionApprovalRequired}

#{spaceContext.space[spaceName].metadata.unsubscriptionApprovalRequired}

現在のスペースまたは指定したスペースからのサブスクライブ解除に承認が必要かどうかを表すブール値を返します。

表28-9 グループ・スペースUI情報のEL式

EL式

説明

#{spaceContext.space[spaceName].metadata.uiMetadata.gsSiteTemplateId}

#{spaceContext.currentSpace.metadata.uiMetadata.gsSiteTemplateId}

現在のスペースまたは指定したスペースに関連付けられたページ・テンプレートのIDを返します。

#{spaceContext.space[spaceName].metadata.uiMetadata.rcForGSPages}

#{spaceContext.currentSpace.metadata.uiMetadata.rcForGSPages}

現在のスペースまたは指定したスペースに関連付けられたリソース・カタログのIDを返します。

#{spaceContext.space[spaceName].metadata.uiMetadata.rcForGSSiteTemplates}

#{spaceContext.currentSpace.metadata.uiMetadata.rcForGSSiteTemplates}

現在のスペースのページ・テンプレートに関連付けられたリソース・カタログのIDを返します。

#{spaceContext.space[spaceName].metadata.uiMetadata.gsSiteStructureId}

#{spaceContext.currentSpace.metadata.uiMetadata.gsSiteStructureId}

現在のスペースに関連付けられたナビゲーション・モデルのIDを返します。

#{spaceContext.space[spaceName].metadata.uiMetadata.skin}

#{spaceContext.currentSpace.metadata.uiMetadata.skin}

現在のスペースに関連付けられたADF Facesスキン・ファミリを返します。

#{spaceContext.space[spaceName].metadata.uiMetadata.footerHidden}

#{spaceContext.currentSpace.metadata.uiMetadata.footerHidden}

スペースのフッターが非表示かどうかを表すブール値を返します。

#{spaceContext.space[spaceName].metadata.uiMetadata.copyrightMessage}

#{spaceContext.currentSpace.metadata.uiMetadata.copyrightMessage}

スペースで使用する著作権メッセージを返します。

#{spaceContext.space[spaceName].metadata.uiMetadata.privacyPolicyUrl}

#{spaceContext.currentSpace.metadata.uiMetadata.privacyPolicyUrl}

従っているプライバシ・ポリシー・ドキュメントのURLを返します。

28.4.5 コンテンツ・タイプのプロパティ名の発見

この項では、コンテンツ・アイテムのコンテンツ・タイプのプロパティ名を知るために役立つテクニックを説明します。

注意:

RESTサービスを使用しても、コンテンツ・タイプのプロパティ名を取得できます。詳細は『Oracle Fusion Middleware Content Management REST Service開発者ガイド』を参照してください。

各コンテンツ・アイテムは、コンテンツ・サーバーのリポジトリで定義された特定コンテンツ・タイプに関連付けらます。コンテンツ・タイプはコンテンツ・サーバーのプロファイル定義とSite Studioのリージョン定義にマップできます。タイプはコンテンツ・サーバー上で作成されます。コンテンツ・タイプはコンテンツ・アイテムのプロパティを定義し(表28-10を参照)、テンプレートの登録時に識別されます。

コンテンツ・プレゼンタ表示テンプレートの開発者は、選択されたコンテンツ・アイテムのページ上での表示方法を定義できるように、関連付けられたコンテンツ・タイプに定義されたプロパティの名前を知っておくことが必要です。

Content Serverで定義されている既存コンテンツ・タイプのプロパティを判断する1つの方法は、WebCenter Portal: Spacesの「コンテンツ・プレゼンタ構成」ダイアログを使用する方法です。

1. 「コンテンツ・プレゼンタ構成」ダイアログを開きます。手順は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の「コンテンツ・プレゼンタ構成」ダイアログの表示に関する項を参照してください。

2. 「コンテンツ・プレゼンタ構成」ダイアログの「コンテンツ」タブで、「問合せの結果」を選択してコンテンツ・タイプのリストを表示します。

3. 表示するコンテンツ・アイテムの「コンテンツ・タイプ」を選択します。

4. 「その他の問合せフィルタ」の隣の「追加」をクリックして、選択したコンテンツ・タイプに定義されているすべてのプロパティをリストします(図28-4)。

注意:

ドロップダウン・リストに表示されるプロパティ名のリスト(図28-4)は表示名のみです。たとえば、表示名Authorは、実際のコンテンツ・タイプ・プロパティ名dDocAuthorに対応します。

表示名に対応する実際のプロパティ名を見つけるには、Content Server管理コンソールを通してアクセスするか、Content Server管理者に問い合せてください。

実際のコンテンツ・タイプ・プロパティを参照する際、先頭にdまたはxを付けて内部Content Serverプロパティ名を参照する必要があります。接頭辞dはシステム・プロパティを識別し、接頭辞xはユーザー・プロパティを識別します。たとえば、dDocAuthorまたはxCollectionIDとなります。

図28-4 コンテンツ・タイプのプロパティの識別

「図28-4 コンテンツ・タイプのプロパティの識別」の説明

28.4.6 表示テンプレートにおける外部ファイルの参照

場合によっては、CSSファイルのような外部ファイルを表示テンプレートで参照する必要があります。このようなすべての参照では、Webアプリケーションのルートへの相対パスか絶対パスを指定します。例:

- 絶対パス – http://host:port/mypath/file.css

- 相対パス – /webcenter/mypath/file.css

外部ファイルに対するローカル参照は使用しないでください。第28.5項「コンテンツ・プレゼンタ表示テンプレートの使用」で説明されているように、外部ファイルへのローカル参照は、コンテンツ・プレゼンタ表示テンプレートのWebCenter Portal: Spacesアプリケーションへのアップロードに含まれないため、動作しません。

28.4.7 カスタム・ビューにおけるSite Studioリージョン要素の参照

カスタム表示テンプレートを使用してSite Studioリージョン定義要素を表示できます。たとえば、TITLE、LEAD、IMAGEおよびBODYという4つの要素を持つRD_NEWSというSite Studioリージョン定義があると仮定します。コンテンツ・プレゼンタ表示テンプレートでは、次のようなノード・プロパティEL式を使用して、これらの要素を参照できます。

#node.propertyMap['RD_NEWS:LEAD'].asTextHtml}

例28-4は、こうしたSite Studioリージョン要素をcontentTemplateDef定義に含める方法を示します。

例28-4 テンプレートにおける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://blogs.oracle.com/ATEAM_WEBCENTER/entry/content_presenter_cmis_complete)を参照してください。

28.4.8 コンテンツ・プレゼンタ表示テンプレートの使用

コンテンツ・タスク・フローでの表示テンプレートの使用の詳細は、第30.5項「コンテンツ・タスク・フローのページへの追加」および第30.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。WebCenter Portal: Frameworkアプリケーションへの表示テンプレートの統合の詳細は、第28.5項「コンテンツ・プレゼンタ表示テンプレートの使用」を参照してください。

注意:

コンテンツ・プレゼンタの表示テンプレートを使用してWikiページをFrameworkアプリケーションで表示すると、デフォルトでそのWikiページ内のリンクがドキュメント・ビューアで表示されます。コンテンツ・プレゼンタを使用してWikiページのリンクを表示する場合、adf-config.xmlファイルを編集する必要があります。詳細は、第31.3.5項「コンテンツ・プレゼンタでのWikiページ・リンクの表示」を参照してください。

28.5 コンテンツ・プレゼンタ表示テンプレートの使用

この項では、SpacesまたはFrameworkアプリケーションで使用可能なコンテンツ・プレゼンタ表示テンプレートの作成方法を説明します。

- 第28.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」

- 第28.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」

- 第28.5.3項「新しいコンテンツ・プレゼンタ表示テンプレートのテスト」

注意:

ローカルで構成されたJDev環境を使用してFrameworkアプリケーションを開発する場合、アプリケーションでコンテンツ・プレゼンタ表示テンプレートを使用するには、第28.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」の説明に従ってポータル・リソースとしてエクスポートします。第28.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」で説明されているアップロード・タスクの実行は不要です。

28.5.1 ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート

この項では、ポータル・リソースとしてコンテンツ・プレゼンタ表示テンプレートをエクスポートする方法を説明します。この手順は、コンテンツ・プレゼンタ表示テンプレートをSpacesまたはデプロイ済Frameworkアプリケーションおよび実行時のコンテンツ・プレゼンタに追加するための前提条件です。

1. 前述の第28.4項「コンテンツ・プレゼンタ表示テンプレートの作成」の説明に従ってコンテンツ・プレゼンタ表示テンプレートを作成します。

2. アプリケーション・ナビゲータで、コンテンツ・プレゼンタ表示テンプレート・ファイル(JSFFファイル)を右クリックし、「ポータル・リソースの作成」を選択します。

3. 「ポータル・リソースの作成」ダイアログに入力します。このダイアログは、単一アイテムと複数アイテムのどちらのテンプレートを作成するかによって異なります。単一アイテムのテンプレートのダイアログは図28-5に示されています。複数アイテムのテンプレートのダイアログは図28-6に示されています。

図28-5 単一アイテムのテンプレートの「ポータル・リソースの作成」ダイアログ

「図28-5 単一アイテムのテンプレートの「ポータル・リソースの作成」ダイアログ」の説明

図28-6 複数アイテムのテンプレートの「ポータル・リソースの作成」ダイアログ

「図28-6 複数アイテムのテンプレートの「ポータル・リソースの作成」ダイアログ」の説明

通常は「ポータル・リソースの作成」ダイアログのデフォルト設定で十分ですが、「ビューID」フィールドに一意の値を入力する必要があります。「表示名」は、実行時に表示テンプレートのドロップダウン・メニューに表示される名前です。

ビューIDパラメータは人間が判読可能な形式を意図しているので、自動的には生成されません。たとえば、ビューIDを使用して、あるテンプレートを別のテンプレートからプログラムによって参照できます。たとえば、複数コンテンツ・アイテムのテンプレートで各アイテムのタブをレンダリングし、選択されたタブの下で使用される単一アイテムのテンプレートをコールして、選択されたアイテムの詳細をレンダリングできます。また、たとえば、コンテンツ・プレゼンタ・タスク・フローのパラメータとしてビューIDを渡すことで、あるテンプレートを別のテンプレートに含めることができます。後者のユース・ケースを示す詳細な例は、WebCenterアーキテクチャ・チームのブログ・エントリ(http://blogs.oracle.com/ATEAM_WEBCENTER/entry/content_presenter_cmis_complete)を参照してください。第28.4.7項「カスタム・ビューにおけるSite Studioリージョン要素の参照」も参照してください。

単一アイテムのテンプレート用の「ポータル・リソースの作成」ダイアログには、他に次の属性が含まれます。

- テンプレート・タイプ – テンプレートが単一アイテムと複数アイテムのどちらのテンプレートかを反映します。

- コンテンツ・リポジトリ名 – デフォルトでは、ポータル・リソースは、アプリケーションのデフォルト・コンテンツ接続に関連付けられたリポジトリを使用します。WebCenter Portal: Spacesアプリケーションで使用するためにポータル・リソースをエクスポートする場合、WebCenter Portal: Spaces接続名で使用されるものと一致するリポジトリを選択する必要があります。

- コンテンツ・タイプ – テンプレートが有効なコンテンツ・タイプを選択できます。メニューに表示されるコンテンツ・タイプのリストは、選択されたコンテンツ・リポジトリに応じて異なります。

- コンテンツ・タイプのデフォルト・ビュー – 「True」に設定すると、表示テンプレートが、リポジトリとコンテンツ・タイプの所定の組合せに使用するデフォルト・テンプレートであることを指定します。

- ビューID – この項で前述したように、テンプレートをプログラム的に参照するために使用する一意の値。

複数アイテムのテンプレート用の「ポータル・リソースの作成」ダイアログには、他に次の属性が含まれます。

- テンプレート・タイプ – テンプレートが単一アイテムと複数アイテムのどちらのテンプレートかを反映します。

- カテゴリ名 – 表示テンプレートのカテゴリに指定する名前。カテゴリを説明する名前を指定するか、「デフォルトのテンプレート」のカテゴリ名を使用できます。

- カテゴリID – カテゴリのID。カテゴリ名として「デフォルトのテンプレート」を選択すると、このフィールドは読取り専用となり、oracle.webcenter.content.templates.default.categoryが設定されます。新しいカテゴリを作成する場合、この値には一意の文字列を指定できます。たとえば、oracle.webcenter.content.templates.pressrelease.categoryを指定できます。2つのリソースが同じIDを持つ場合、それらはユーザー・インタフェースで同じグループにまとめられます。

- ビューID – この項で前述したように、テンプレートをプログラム的に参照するために使用する一意の値。

注意:

「ポータル・リソースの作成」ダイアログの他のフィールドの詳細は、第16.4.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

4. 終了したら、ダイアログで「OK」をクリックします。

5. コンテンツ・プレゼンタ表示テンプレート(JSFF)ファイルを再度右クリックして、今回は「ポータル・リソースのエクスポート」を選択します。

6. 「ポータル・リソースのエクスポート」ダイアログで、エクスポートしたポータル・リソース・ファイルを配置するディレクトリを入力するか参照します。このファイルはファイル・システムの任意の場所に配置できます。

7. 「ポータル・リソースのエクスポート」ダイアログで「OK」をクリックします。

これで、コンテンツ・プレゼンタ表示テンプレートがポータル・リソースとしてエクスポートされたので、次の手順でそれをWebCenter Portalアプリケーションにアップロードします。表示テンプレートのポータル・リソースをアップロードすると、ポータル・ページにコンテンツ・プレゼンタを追加するときに、表示テンプレートのリストから使用可能になります。

28.5.2 新しいコンテンツ・プレゼンタ表示テンプレートのアップロード

新しい表示テンプレートは、リソース・マネージャを含むデプロイ済のWebCenter Portal: FrameworkまたはWebCenter Portal: Spacesアプリケーションにアップロードできます。アプリケーション管理者がコンテンツ・プレゼンタ表示テンプレートをFrameworkまたはSpacesアプリケーションにアップロードする手順は、次のとおりです。

注意:

コンテンツ・プレゼンタ表示テンプレートを開発した設計時のFrameworkアプリケーションとWebCenter Portal: Spacesアプリケーションで、同じリポジトリ接続名と詳細にする必要があります。

また、表示テンプレートの外部ファイルへの参照は、絶対パスまたは相対パス参照で指定する必要があります。第28.4.6項「表示テンプレートにおける外部ファイルの参照」を参照してください。

注意:

Spacesアプリケーション内の特定のスペースのスコープからのアップロードは、Spaces管理ツールのアプリケーション・スコープからのアップロードとは異なります。詳細は、第55.3.4項「JDeveloperでのSpacesリソースの編集」の、アプリケーションレベル・リソースとスペースレベル・リソースの項を参照してください。

1. WebCenter Portal: FrameworkまたはWebCenter Portal: Spacesアプリケーションを起動します。

2. 「管理」をクリックします。
Spacesでは、管理者権限が必要です。

3. 「リソース」タブを選択します。

4. 「外観とレイアウト」という見出し(Webページの右側)の下の「コンテンツ・プレゼンタ」をクリックします。

5. 図28-7に示された「アップロード」を選択します。

図28-7 表示テンプレート・ポータル・リソースのアップロード

「図28-7 表示テンプレート・ポータル・リソースのアップロード」の説明

6. 「アップロード」ダイアログで、ファイル・システム上に保存したポータル・リソース・ファイルにナビゲートします。

7. テンプレート・ファイルを選択したら、「OK」をクリックします。操作に成功した場合、「情報」ダイアログが「リソースは正常にアップロードされました。」というメッセージとともに表示されます。

8. 図28-8に示されているように、「リソース」タブのリスト・ビューからコンテンツ・プレゼンタ表示テンプレートを見つけて選択します。

図28-8 テンプレートの表示と非表示の状態の切替え

「図28-8 テンプレートの表示と非表示の状態の切替え」の説明

9. テンプレートの状態が現在非表示の場合、「編集」メニューから「表示」を選択します。テンプレートが非表示の場合、コンテンツ・プレゼンタで使用できません。

これで、新しいコンテンツ・プレゼンタ表示テンプレートを、WebCenter Portal: Spacesアプリケーションのコンテンツ・プレゼンタで使用する準備が整いました。

28.5.3 新しいコンテンツ・プレゼンタ表示テンプレートのテスト

この項では、コンテンツ・プレゼンタを使用してコンテンツ・プレゼンタ表示テンプレートをテストする方法を説明します。

1. コンテンツ・プレゼンタ表示テンプレートを追加したWebCenter Portal: Spacesアプリケーションを現在実行中でない場合、これを起動します。このアプリケーションには、コンテンツ・プレゼンタが使用できるContent Server接続が必要です。前の項で説明されている設定手順を完了したばかりの場合、「管理」ページの右上隅の「スペースに戻る」リンクをクリックします。

2. 新しいコンテンツ・プレゼンタ表示テンプレートを使用するスペースに移動します。これを行うには、「スペース」タブを選択して、所有するスペースまたは編集可能なスペースを選択します。

3. オプションとして、表示テンプレートをテストするために新しいページを作成します。「ページ・アクション」メニューから「新規ページの作成」を選択します。「保存」と「閉じる」を選択します。

4. 新規ページまたは既存のページで、「ページ・アクション」メニューから「ページの編集」を選択します。

5. コンテンツ・プレゼンタを追加するページの部分で「コンテンツの追加」ボタンを選択します。

6. 図28-9に示すように、「コンテンツの追加」ダイアログで「コンテンツ管理」フォルダを開きます。

図28-9 「ドキュメント管理」フォルダを開く手順

「図28-9 「ドキュメント管理」フォルダを開く手順」の説明

7. 「コンテンツの追加」ダイアログで、コンテンツ・プレゼンタの隣の「追加」ボタンをクリックします。

8. 「コンテンツの追加」ダイアログを閉じます。

9. コンテンツ・プレゼンタ・ツール・バーでタスク・フローの「編集」アイコンを選択します(図28-10を参照)。

図28-10 「編集」アイコンの選択

「図28-10 「編集」アイコンの選択」の説明

10. 「コンテンツ・プレゼンタ構成」ウィンドウで、「テンプレート」タブを選択します。

11. 図28-11に示されているように、「テンプレート」メニューからコンテンツ・プレゼンタ表示テンプレートを選択します。

図28-11 コンテンツ・プレゼンタ表示テンプレートの選択

「図28-11 コンテンツ・プレゼンタ表示テンプレートの選択」の説明

このコンテンツ・プレゼンタ・テンプレートが、コンテンツ・プレゼンタ・インスタンスに適用されます。コンテンツ・プレゼンタと表示テンプレートの使用の詳細は、第30.2項「ドキュメント・サービス・タスク・フローの理解」と第28.3項「デフォルト表示テンプレートの使用」を参照してください。

28.6 実行時の処理

この項の内容は、次のとおりです。

- 第28.6.1項「実行時の概要」

- 第28.6.2項「選択されたコンテンツ・アイテムの表示テンプレートの識別」

28.6.1 実行時の概要

コンテンツ・プレゼンタ表示テンプレートを定義したら、コンテンツ・プレゼンタ・タスク・フロー・パラメータでコンテンツと表示テンプレートを指定して、アプリケーションのページにコンテンツ・プレゼンタ・タスク・フローを追加できます(第30.6項「コンテンツ・タスク・フローのパラメータの変更」と第28.3項「デフォルト表示テンプレートの使用」を参照)。

アプリケーションにドキュメント・サービスを統合する場合(第29章「ドキュメント・サービスの統合」を参照)、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のコンテンツ・プレゼンタを使用したコンテンツの公開に関する項で説明されているように、アプリケーションのエンド・ユーザーは「コンテンツ・プレゼンタ構成」ダイアログでコンテンツとコンテンツ・プレゼンタ表示テンプレートを選択して、アプリケーションの編集可能なページにコンテンツを含めることができます。「コンテンツ・プレゼンタ構成」ダイアログで公開する表示テンプレートをコンテンツ・プレゼンタが識別する方法については、第28.6.2項「選択されたコンテンツ・アイテムの表示テンプレートの識別」を参照してください。

28.6.2 選択されたコンテンツ・アイテムの表示テンプレートの識別

実行時にユーザーが「コンテンツ・プレゼンタ構成」ダイアログでコンテンツを選択すると、コンテンツ・プレゼンタはリソース・マネージャをチェックして、選択されたコンテンツ・アイテムに適した表示テンプレートを識別し、ユーザーが選択できるように「コンテンツ・プレゼンタ構成」ダイアログの「テンプレート」ページに有効なテンプレートのリストを公開します。第16章「リソース・マネージャの追加および使用」も参照してください。

単一コンテンツ・アイテムのテンプレートの場合は、コンテンツ・プレゼンタは次の優先順位に従って有効なテンプレートのリストを生成します。

1. リソース・マネージャで、コンテンツ・アイテムのコンテンツ・リポジトリとコンテンツ・タイプに一致するテンプレート定義をチェックします。

2. デフォルトのコンテンツ・リポジトリ(*)と指定のコンテンツ・タイプに一致するテンプレート定義を追加します。

3. 継承されたコンテンツ・タイプに一致するテンプレート定義を追加します。

4. デフォルトのコンテンツ・リポジトリ(*)とデフォルトのコンテンツ・タイプ(*)に一致するテンプレート定義を追加します。

複数コンテンツ・アイテムのテンプレートの場合は、コンテンツ・プレゼンタは次の優先順位に従って有効なテンプレートのリストを生成します。

1. リソース・マネージャで、選択されたテンプレート・カテゴリに関連付けられたテンプレート定義をチェックします。

2. デフォルト・カテゴリ(*)に関連付けられたテンプレート定義を追加します。

たとえば、ユーザーが複数コンテンツ・アイテム(フォルダの複数の子、検索の複数の結果など)を選択した場合、「コンテンツ・プレゼンタ構成」ダイアログには、コンテンツ・アイテムのリポジトリに基づいて、カテゴリのリストとそのカテゴリおよびデフォルト・カテゴリに関連付けられたテンプレートのリストが表示されます。

注意:

「コンテンツ・プレゼンタ構成」ダイアログでユーザーがテンプレートを選択すると、そのテンプレートを使用して実行中のアプリケーションで選択されたコンテンツ・アイテムが表示されます。後でなんらかの理由でそのテンプレートがリソース・マネージャから削除された場合、コンテンツ・プレゼンタは前述の優先順位に従ってコンテンツ・アイテムを表示するために最も一致度の高いテンプレートを自動的に選択します。

28.7 コンテンツ・プレゼンタ表示テンプレートのパフォーマンスの考慮点

コンテンツ・プレゼンタ表示テンプレートで表示するためにコンテンツ・ノードを取得すると、ほとんどのコンテンツ・アイテム・ノード・プロパティ値はノードとともに即座に取得されますが、一部の値は後で必要な場合のみロードされます。ノード・プロパティ値の選別的なロードは、パフォーマンスの違いをもたらすほか、ユーザーや開発者に透過的です。

コンテンツ・プレゼンタ表示テンプレートの開発者は、異なるプロパティ値がロードされたことに気付いた場合、テンプレートのパフォーマンスを最適化できます。たとえば、一般的なリストの表示テンプレートの場合、ノードを最初に取得したときに即座にロードされるプロパティのみを参照して、後で必要なときにロードされるプロパティを避けると、より高速にレンダリングされます。

2番目の考慮点は、ノードの取得方法(検索による方法と親IDによるフェッチする方法)によって決まります。検索(「問合せの結果」など)のためのノード取得時には即座にロードされるプロパティが、他の取得方法(「フォルダの下のコンテンツ」など)では後でロードされる可能性があります。表28-10は、取得メカニズム別に、ノード取得時にノード・プロパティが即座にロードされるかどうかを示しています。

表28-10にリストされたノード・プロパティの詳細は、Oracle WebCenter Content Idocスクリプト・リファレンス・ガイドを参照してください。

表28-10 ノード取得メカニズム別のノード・プロパティのロード

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

29 ドキュメント・サービスの統合

WebCenter Portal: Frameworkアプリケーションにコンテンツを統合するには、いくつかの方法があります。詳細は、第25章「コンテンツの統合と公開の概要」を参照してください。

この章では、ドキュメント・サービスをFrameworkアプリケーションに統合して、コンテンツをアプリケーションに追加すると同時に、実行時にドキュメントを管理、表示および検索するためにアプリケーションに組み込まれたコンテンツおよびドキュメント・サービス・タスク・フローをエンド・ユーザーに提供する方法を説明します。

この章には次の項が含まれます:

- 第29.1項「ドキュメント・サービスの概要」

- 第29.2項「接続の設定」

- 第29.3項「ドキュメント・サービスのセキュリティの設定」

- 第29.4項「他のWebCenterサービスとドキュメント・サービスの併用」

- 第29.5項「コンテンツ・リポジトリにファイルをアップロードするためのパラメータの設定」

- 第29.6項「ドキュメント・サービスによるアダプタの使用」

29.1 ドキュメント・サービスの概要

ドキュメント・サービスは、フォルダとファイルへのアクセスとその追加および管理、ファイルおよびフォルダ・プロパティの構成と表示、ならびにContent Server、Oracle PortalまたはSharePointコンテンツ・リポジトリのファイルおよびフォルダ・コンテンツの検索を行うための機能を提供します。これらの機能は、ドキュメント・サービス・タスク・フロー、ドキュメント・コンポーネント(リンク、インライン・フレームおよびイメージ)、Wikiならびにブログを通して提供されます。

注意:

SharePointをコンテンツ・リポジトリとして使用するには、第3.6項「SharePoint用Oracle WebCenterアダプタのインストール」の説明に従って、SharePointアダプタのインストールが必要です。SharePointの管理は、Oracle Enterprise Manager Fusion Middleware ControlコンソールではなくWLSTコマンドを使用して行います。

ドキュメント・サービスをFrameworkアプリケーションに統合するには、WebCenter Portal管理者は管理対象のドキュメントを含むコンテンツ・リポジトリへの接続を設定する必要があります。使用するコンテンツ・リポジトリで認証が必要な場合、第29.2項「接続の設定」の説明に従って、コンテンツ・リポジトリへの接続を構成する際に必ず外部アプリケーションを設定してください。

29.2 接続の設定

ドキュメント・サービスとタスク・フローを使用する前に、管理対象のドキュメントを含むContent Server、Oracle PortalまたはSharePointコンテンツ・リポジトリへの接続を設定する必要があります。作成済の接続を再利用することも、新たに作成することもできます。

注意:

Oracle JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager Fusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』を参照してください。

選択されたアプリケーション・セキュリティとコンテンツ・リポジトリ接続の認証が、互換性があることが必要です。たとえば、パブリック資格証明のみが定義されている外部アプリケーションを使用するように接続が構成されている場合、アプリケーションでユーザー認証を強制する必要はありません。接続構成の詳細は、第26.2項「コンテンツ・リポジトリ接続の構成」を参照してください。

29.3 ドキュメント・サービスのセキュリティの設定

ドキュメント・サービス・タスク・フローは、コンテンツ・リポジトリ接続でサポートされているセキュリティ・オプションと同じセキュリティ・オプションをサポートしています。Oracle Content ServerやOracle Portalなどのリモート・コンテンツ・リポジトリにアクセスするため、このサービスは専用のユーザー・アカウントで外部アプリケーションを使用できます。コンテンツ・リポジトリでのセキュリティの使用の詳細は、第27.4項「コンテンツ・リポジトリ・データ・コントロールの保護」を参照してください。外部アプリケーションの使用の詳細は、第68.13項「外部アプリケーションの使用」を参照してください。

Oracle PortalやOracle Content Serverといった自らの認証を処理するコンテンツ・リポジトリを使用する場合、そのコンテンツ・リポジトリを外部アプリケーション定義と関連付けて、資格証明プロビジョニングを実行できます。共有資格証明またはパブリック資格証明なしで外部アプリケーションを使用するようにコンテンツ・リポジトリへの接続を変更できます。これを行うと、エンド・ユーザーがその資格証明を提供できるように、外部アプリケーション - パスワードの変更タスク・フローが自動的に統合されます。

既存のコンテンツ・リポジトリ接続の外部アプリケーションを登録するには:

1. 「アプリケーション・リソース」ペインで、接続名を右クリックして「プロパティ」を選択します。

2. 「認証」の下の「コンテンツ・リポジトリ接続の編集」ダイアログ・ボックスで「外部アプリケーション」を選択します(図29-1)。

図29-1 「コンテンツ・リポジトリ接続」ダイアログでの「外部アプリケーション」の選択

3. 緑色のプラス記号(+)をクリックして、外部アプリケーションの登録ウィザードを開始します。

4. 名前ページで「アプリケーション名」および「アプリケーション表示名」を入力し(図29-2)、「次へ」をクリックします。

図29-2 外部アプリケーションのネーミング

5. 「認証の詳細」の下の一般ページで、「認証方式」リストから「基本」を選択し(図29-3)、「次へ」をクリックします。

図29-3 「Basic」認証方式の選択

6. 「追加フィールド」ページで、「次へ」をクリックします。

7. 「共有資格証明」ページで、「次へ」をクリックします。

8. 「パブリック資格証明」ページで、「パブリック資格証明を指定します」を選択し、コンテンツ・リポジトリの「ユーザー名」と「パスワード」を入力します(図29-4)。

図29-4 パブリック資格証明の指定

9. 「終了」をクリックします。これで、外部アプリケーションを使用して認証するように接続が設定されます(図29-5)。

図29-5 新しい外部アプリケーションの使用

10. 「コンテンツ・リポジトリ接続の編集」ダイアログ・ボックスで、「OK」をクリックします。「アプリケーション・リソース」パネルに、その外部アプリケーションが表示されます(図29-6)。

図29-6 「アプリケーション・リソース」パネルの外部アプリケーション

「図29-6 「アプリケーション・リソース」パネルの外部アプリケーション」の説明

セキュリティを適用しなかった場合、コンテンツ・リポジトリがコンテンツへのアクセスにログインを要求すると、ユーザーは認証できません。実行時にパブリック・コンテンツのみが表示されます。

29.4 他のWebCenterサービスとドキュメント・サービスの併用

ドキュメント・サービスは、他の様々なWebCenterサービスと併用できます。たとえば、コンテンツ・リポジトリのドキュメントにタグを追加して、アプリケーション全体にわたって検索し、その結果にドキュメントを取得したり、コンテンツ・リポジトリへの最近の変更を追跡できます。

タグ・サービスとドキュメント・サービスの併用方法の例は、第43.3.3項「ページにタグを表示するオプションの方法」を参照してください。

これらのサービスを併用する方法の詳細は、第2.4項「Oracle WebCenter Portal: Servicesの概要」を参照してください。

注意:

ドキュメント・サービスと検索サービスを統合すると、検索サービスによってすべてのコンテンツ・リポジトリ接続から結果が返されます。

29.5 コンテンツ・リポジトリにファイルをアップロードするためのパラメータの設定

ドキュメント・マネージャ、ドキュメント・エクスプローラおよびフォルダ・ビューア・タスク・フローによって、コンテンツ・リポジトリにファイルをアップロードできます。WebCenter Portal: FrameworkはApache MyFaces Trinidadを使用して、ブラウザからアプリケーション・サーバーへのファイルのアップロードを処理します。

Apache MyFaces Trinidadのデフォルト設定を変更するために、web.xmlファイルに3つのパラメータを追加できます。このファイルを編集するには、アプリケーションのViewControllerプロジェクトを開きます。「Webコンテンツ」で、web.xmlファイルを開きます。「概要」で、「アプリケーション」→「コンテキスト初期化パラメータ」に移動し、緑色のプラス記号(+)をクリックしてパラメータとその値を追加するか(表29-1の説明を参照)、または単純に「ソース」ビューでコードを更新します。変更を加えたら、web.xmlファイルを保存して、Oracle JDeveloperを再起動します。

表29-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.6 ドキュメント・サービスによるアダプタの使用

コンテンツ・リポジトリ接続の既存アダプタの使用の詳細は、第26章「コンテンツ・リポジトリ接続の管理」を参照してください。

30 ポータル・ページへのコンテンツ・タスク・フローおよびドキュメント・コンポーネントの追加

WebCenter Portal: Frameworkアプリケーションにコンテンツを統合するには、いくつかの方法があります。詳細は、第25章「コンテンツの統合と公開の概要」を参照してください。

Frameworkアプリケーションでは、様々な方法でコンテンツを表示するために、コンテンツ・プレゼンタまたはドキュメント・サービス・タスク・フローを使用して、1つ以上の接続コンテンツ・リポジトリからアプリケーションにコンテンツを追加できます。アプリケーションの開発では、コンテンツ・タスク・フローを使用して、アプリケーションのエンド・ユーザーと同じ方法で、コンテンツを表示、編集および管理できます。コンテンツ・タスク・フローのコンテンツの表示、編集および管理の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のコンテンツの使用に関する項を参照してください。

この章では、コンテンツ・タスク・フローを使用してFrameworkアプリケーションでページにコンテンツを追加する方法について説明し、次の各項で各コンポーネントについて解説します。

- 第30.1項「コンテンツ・プレゼンタ・タスク・フローの理解」

- 第30.2項「ドキュメント・サービス・タスク・フローの理解」

- 第30.3項「ドキュメント・コンポーネントの理解」

- 第30.4項「選択したフォルダまたはファイルのページへの追加」

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

- 第30.6項「コンテンツ・タスク・フローのパラメータの変更」

- 第30.7項「コンテンツ・タスク・フローのパラメータ」

30.1 コンテンツ・プレゼンタ・タスク・フローの理解

コンテンツ・プレゼンタにより、WebCenter Portalアプリケーションでコンテンツの選択およびプレゼンテーションを正確にカスタマイズできます。

接続されるコンテンツ・リポジトリがContent Serverであり、WebCenter Portal管理者が前提条件構成を完了させた場合のみ、コンテンツ・プレゼンタ・タスク・フローが利用できます。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のコンテンツ・サーバーの前提条件に関する項

- 第26.2.1項「Oracle Content Serverアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」

コンテンツ・プレゼンタ・タスク・フローにより、コンテンツの単一アイテム、フォルダ下のコンテンツ、アイテムのリストまたはコンテンツに対する問合せを選択するか、パーソナライズ・コンダクタのシナリオの結果に基づいてコンテンツを選択してから、WebCenter Portalアプリケーションのページにコンテンツをレンダリングするテンプレートを選択できます。

コンテンツ・プレゼンタでは表示されるコンテンツの追加や管理においてドキュメント・サービスに依存しません。

コンテンツ・プレゼンタ・タスク・フローをページに追加する場合、第30.4項「選択したフォルダまたはファイルのページへの追加」および第30.5項「コンテンツ・タスク・フローのページへの追加」を参照してください。

注意:

コンテンツのアイテムを表示するためにコンテンツ・プレゼンタ・タスク・フローを含むページ・テンプレートにページが基づく場合、ページ・テンプレート開発者は、ページ・テンプレートのコンテンツを表示するために、次のように手動でタスク・フロー・プロパティを変更する必要があります。

- datasource: connection_name#dDocName:content_ID

- datasourceType: dsTypeSingleNode

- taskFlowInstId: 一意の識別子

コンテンツ・プレゼンタ・タスク・フローの詳細は、表30-4「コンテンツ・プレゼンタ・タスク・フローのパラメータ」を参照してください。

ページ・テンプレートの作成の詳細は、第11.2.2項「ページ・テンプレートを作成する方法」を参照してください。

30.2 ドキュメント・サービス・タスク・フローの理解

ドキュメント・サービス・タスク・フローは、Wikiおよびブログを含めて、Frameworkアプリケーションでページ上にフォルダおよびファイルを表示するための様々なフォーマットを提供しています。アプリケーションに合ったタスク・フローを選択することによって、Content Server、Oracle PortalまたはSharePointコンテンツ・リポジトリにあるフォルダとファイルへのアクセス、追加および管理を行う機能、それらのファイルとフォルダのプロパティを構成し表示する機能、およびファイルとフォルダのコンテンツを検索する機能が提供されます。

注意:

SharePointをコンテンツ・リポジトリとして使用するには、第3.6項「SharePoint用Oracle WebCenterアダプタのインストール」の説明に従って、SharePointアダプタのインストールが必要です。SharePointの管理は、Oracle Enterprise Manager Fusion Middleware ControlコンソールではなくWLSTコマンドを使用して行います。

Frameworkアプリケーションでドキュメント・サービス・タスク・フローをページに追加するには、最初にWebCenter Portal管理者がコンテンツ・リポジトリ接続を確立することにより、ドキュメント・サービスをアプリケーションに統合する必要があります。詳細は、第29章「ドキュメント・サービスの統合」および第26章「コンテンツ・リポジトリ接続の管理」を参照してください。

ドキュメント・サービス・タスク・フローとドキュメント・コンポーネント(リンク、プレビューおよびイメージなど)を使用すると、コンテンツをアプリケーションに追加し、アプリケーションに組み込まれたドキュメント・サービス・タスク・フローとコンテンツもエンド・ユーザーに用意して、実行時にドキュメントの管理、表示および検索ができます。

表30-1に、ドキュメント・サービス・タスク・フローの概要を示します。

表30-1 ドキュメント・サービス・タスク・フロー

フォルダおよびファイルのリスト

個々のフォルダ

個々のファイル

ドキュメント・エクスプローラ・タスク・フロー。2つのペインにフォルダおよびファイルを表示し、ドキュメント・ナビゲータおよびフォルダ・ビューア・タスク・フローの機能を結合します。また、Windows Explorerユーザーが使い慣れたインタフェースにより、インプレースでのプレビューおよび編集機能、堅牢な管理機能を提供します。サイズは中からフル・ページの幅です。図30-1を参照してください。

X

X

ドキュメント・リスト・ビューア・タスク・フロー。単一のペインにフラット・リストとしてフォルダおよびファイルを表示します。個別のウィンドウおよびいくつかの管理機能で、プレビューおよび編集を可能にします。サイズは狭から中ページの幅です。図30-2を参照してください。

X

X

ドキュメント・マネージャ・タスク・フロー。layoutプロパティ(explorer、tableまたはtreeTable)によって指定されるフォルダおよびファイルを表示します。explorerレイアウトは、プロパティshowDocuments、showFoldersおよびtreeNavCollapsedを除いて、ドキュメント・エクスプローラ・タスク・フローの場合と同じです。図30-3、図30-4および図30-5を参照してください。

X

X

ドキュメント・ナビゲータ・タスク・フロー。単一ペインにフォルダおよびファイルのネストされた階層を表示し、全階層を表示するためのフォルダの展開および縮小を提供します。サイズは狭から中ページの幅です。図30-6を参照してください。

X

X

フォルダ・ビューア・タスク・フロー。単一ペインにフラット・リストとしてフォルダのコンテンツを表示し、Windowsユーザーが使い慣れた簡単なインタフェースにより、インプレースでのプレビューおよび編集機能、堅牢なドキュメント管理機能を提供します。サイズは中からフル・ページの幅です。図30-7を参照してください。

X

X

最近のドキュメント・タスク・フロー。現在のフォルダで最近になって作成または変更されたファイルのリストを表示します。図30-8を参照してください。

X

ドキュメント・ビューア・タスク・フロー。ファイルのプレビューを表示するか、プレビューをサポートしないファイルのファイル・プロパティを表示します。図30-9、図30-10および図30-11を参照してください。

X脚注 1

X

ドキュメント・ミニ・プロパティ・タスク・フロー。読取り専用ビューでファイルの基本プロパティを表示します。図30-12を参照してください。

X^1

X

ドキュメント・プロパティ・タスク・フロー。ファイルの基本プロパティおよびアドバンスト・プロパティに加えて、プロパティ値を変更するための「編集」ボタンを表示します。図30-13を参照してください。

X^1

X

リッチ・テキスト・エディタ・タスク・フロー。リッチ・テキスト・エディタでHTMLまたはWikiドキュメントを表示します。

X

X

ドキュメント・アップロード・タスク・フロー。ユーザーが新しいドキュメントをページにアップロードできる「アップロード」ダイアログを表示します。

X

X

ドキュメント・バージョン履歴・タスク・フロー。ファイルのバージョンのリストを表示し、選択したバージョンを削除できます。図30-14と図30-15を参照してください。

X

AutoVueタスク・フロー。ファイルのAutoVueマークアップをハイパーリンク付きのマークアップ名の表に表示します(『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のOracle AutoVueを使用したドキュメントのコラボレーションに関する項を参照)。

X

脚注 1 ドキュメント・ビューア、ドキュメント・ミニ・プロパティまたはドキュメント・プロパティ・タスク・フローでフォルダ情報を表示するには、タスク・フローのresourceIDプロパティにターゲット・フォルダのIDを設定します。第30.7項「コンテンツ・タスク・フローのパラメータ」を参照してください。

ドキュメント・サービス・タスク・フローをページに追加する場合、第30.4項「選択したフォルダまたはファイルのページへの追加」および第30.5項「コンテンツ・タスク・フローのページへの追加」を参照してください。

各ドキュメント・サービス・タスク・フローの詳細は、次のリンクをクリックして『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の関連する項を参照してください。

- ドキュメント・エクスプローラ・タスク・フローの理解
図30-1にドキュメント・エクスプローラ・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第30.7.2項「ドキュメント・エクスプローラ・タスク・フローのパラメータ」を参照してください。

図30-1 ドキュメント・エクスプローラ・タスク・フロー

- ドキュメント・リスト・ビューア・タスク・フローの理解
図30-2に、ドキュメント・リスト・ビューア・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第30.7.3項「ドキュメント・リスト・ビューア・タスク・フローのパラメータ」を参照してください。

図30-2 ドキュメント・リスト・ビューア・タスク・フロー

- ドキュメント・マネージャ・タスク・フローの理解
図30-3、図30-4および図30-5に、ドキュメント・マネージャ・タスク・フローの3つの異なるレイアウトの例を示します。explorerレイアウト(デフォルト)は、プロパティshowDocuments、showFoldersおよびtreeNavCollapsedを除いて、ドキュメント・エクスプローラ・タスク・フローの場合と同じです。このタスク・フローのプロパティ設定の詳細は、第30.7.4項「ドキュメント・マネージャ・タスク・フローのパラメータ」を参照してください。

図30-3 ドキュメント・マネージャ・タスク・フロー: エクスプローラのレイアウト

図30-4 ドキュメント・マネージャ・タスク・フロー: 表のレイアウト

図30-5 ドキュメント・マネージャ・タスク・フロー: ツリー表のレイアウト

- ドキュメント・ナビゲータ・タスク・フローの理解
図30-6に、ドキュメント・ナビゲータ・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第30.7.5項「ドキュメント・ナビゲータ・タスク・フローのパラメータ」を参照してください。

図30-6 ドキュメント・ナビゲータ・タスク・フロー

- フォルダ・ビューア・タスク・フローの理解
図30-7に、フォルダ・ビューア・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第30.7.6項「フォルダ・ビューア・タスク・フローのパラメータ」を参照してください。

図30-7 フォルダ・ビューア・タスク・フロー

- 最近のドキュメント・タスク・フローの理解
図30-8に、最近のドキュメント・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第30.7.7項「最近のドキュメント・タスク・フローのパラメータ」を参照してください。

図30-8 最近のドキュメント・タスク・フロー

- ドキュメント・ビューア・タスク・フローの理解
図30-9、図30-10および図30-11に、異なるファイル・タイプのドキュメント・ビューア・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第30.7.8項「ドキュメント・ビューア・タスク・フローのパラメータ」を参照してください。

図30-9 イメージ・ファイルのドキュメント・ビューア・タスク・フロー

図30-10 HTMLドキュメントのドキュメント・ビューア・タスク・フロー

図30-11 Site Studioファイルのドキュメント・ビューア・タスク・フロー

- ドキュメント・ミニ・プロパティ・タスク・フローの理解
図30-12に、ドキュメント・ミニ・プロパティ・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第30.7.9項「ドキュメント・ミニ・プロパティ・タスク・フローのパラメータ」を参照してください。

図30-12 ファイルのミニ・プロパティ・タスク・フロー

- ドキュメント・プロパティ・タスク・フローの理解
図30-13に、ドキュメント・プロパティ・タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第30.7.10項「ドキュメント・プロパティ・タスク・フローのパラメータ」を参照してください。

図30-13 ファイルのドキュメント・プロパティ・タスク・フロー

- ドキュメント・バージョン履歴・タスク・フローの理解
図30-14および図30-15に、horizontalLayoutプロパティにそれぞれ水平方向、垂直方向の形式が設定されたドキュメント・バージョン履歴タスク・フローの例を示します。このタスク・フローのプロパティ設定の詳細は、第30.7.13項「ドキュメント・バージョン履歴・タスク・フローのパラメータ」を参照してください。

図30-14 ファイルのバージョン履歴タスク・フロー: 垂直レイアウト

図30-15 ファイルのバージョン履歴タスク・フロー: 水平レイアウト

30.3 ドキュメント・コンポーネントの理解

ドキュメント・サービスは、ポータル・ページにドキュメント・コンポーネントを追加するための機能を提供します。第30.4項「選択したフォルダまたはファイルのページへの追加」で説明されているように、選択したフォルダまたはファイルのコンテナとして、ページにドキュメント・コンポーネントを追加できます(図30-16)。

図30-16 ポータル・ページへのファイルの追加

ドキュメント・コンポーネントにより、ファイル・タイプに応じて、様々な方法でページ上に個々のファイルを表示できます。

- リンクでは、選択したファイルの名前がリンクとして表示され、エンド・ユーザーがクリックするとネイティブ・アプリケーションでファイル・コンテンツを表示できます(図30-17)。

図30-17 リンク・コンポーネント(Microsoft Wordファイル用)

- インライン・フレームは、選択したファイルのコンテンツをプレビューとしてページに表示します(図30-18)。

図30-18 インライン・フレーム・コンポーネント(HTMLファイル用)

- イメージは、選択したファイルをイメージとしてページに表示します(図30-19)。

図30-19 イメージ・コンポーネント(JPEGファイル用)

Frameworkアプリケーションでページにドキュメント・コンポーネントを追加するには、第29章「ドキュメント・サービスの統合」に記載されているように、まずコンテンツ・リポジトリへの接続を確立することによりドキュメント・サービスをアプリケーションに統合する必要があります。

表30-2は、様々なコンテンツ・タイプで使用可能なドキュメント・コンポーネントを示しています。

表30-2 フォルダおよびファイルのコンポーネント

コンテンツ・タイプ

ドキュメント・コンポーネント

フォルダ

リンク(ADF実行リンク)

様々なタイプのドキュメント(XML、PDF、JAVA、TXT、DOC、XLS、HTM)

リンク(ADF実行リンク)

ブラウザでレンダリングできるドキュメント(HTML、Flash、PDFおよびイメージ)

インライン・フレーム(ADFインライン・フレーム)

イメージ(PNG、JPG、GIF)

リンク(ADF実行リンク)

インライン・フレーム(ADFインライン・フレーム)

イメージ(ADFイメージ)

これらのドキュメント・コンポーネントのいずれかを使用してフォルダまたはファイルを表示する場合、第30.4項「選択したフォルダまたはファイルのページへの追加」を参照してください。

30.4 選択したフォルダまたはファイルのページへの追加

特定のフォルダまたはファイルに依存せずにページにコンテンツ・タスク・フローを追加するには、第30.5項「コンテンツ・タスク・フローのページへの追加」を参照してください。この項では、図30-20と図30-21に示すように、選択したフォルダまたはファイルの必要なコンテナを接続することで、ページ上の接続されたコンテンツ・リポジトリから個々のフォルダまたはファイルを表示する方法を説明します。

図30-20 ポータル・ページへのフォルダの追加

図30-21 ポータル・ページへのファイルの追加

表30-3に、ポータル・ページにフォルダとファイルを表示するために使用可能なすべてのコンテナをリストします。

表30-3 ページに個々のフォルダおよびファイルを追加するためのコンテナ

ルート・フォルダ

フォルダ

個々のファイル

- ドキュメント・エクスプローラ

- ドキュメント・リスト・ビューア

- ドキュメント・マネージャ

- ドキュメント・ナビゲータ

- フォルダ・ビューア

- 最近のドキュメント

- ドキュメント・ビューア脚注 1

- ドキュメント・ミニ・プロパティ^1

- ドキュメント・プロパティ^1

- ドキュメント・アップロード

- リッチ・テキスト・エディタ

- コンテンツ・プレゼンタ

- ドキュメント・エクスプローラ

- ドキュメント・リスト・ビューア

- ドキュメント・マネージャ

- ドキュメント・ナビゲータ

- フォルダ・ビューア

- ドキュメント・ビューア^1

- ドキュメント・ミニ・プロパティ^1

- ドキュメント・プロパティ^1

- ドキュメント・アップロード

- リッチ・テキスト・エディタ

- コンテンツ・プレゼンタ

- ドキュメント・ビューア

- ドキュメント・ミニ・プロパティ

- ドキュメント・プロパティ

- リッチ・テキスト・エディタ

- ドキュメント・アップロード

- ドキュメント・バージョン履歴

- AutoVue

- リンク・コンポーネント

- インライン・フレーム・コンポーネント

- イメージ・コンポーネント

脚注 1 ドキュメント・ビューア、ドキュメント・ミニ・プロパティまたはドキュメント・プロパティ・タスク・フローでフォルダ情報を表示するには、タスク・フローのresourceIDパラメータにターゲット・フォルダのIDを設定します。第30.7項「コンテンツ・タスク・フローのパラメータ」を参照してください。

表30-3にリストしたコンテナの詳細は、第30.1項「コンテンツ・プレゼンタ・タスク・フローの理解」、第30.2項「ドキュメント・サービス・タスク・フローの理解」および第30.3項「ドキュメント・コンポーネントの理解」を参照してください。

注意:

コンテンツ・リポジトリに保存されているアイテムがページにドロップされると、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/overview/index.html)において、WebCenter SpacesとのSharePoint 2007アダプタの統合のホワイト・ペーパーでキャッシュ制御レスポンス・ヘッダーの設定に関する項を参照してください。

Frameworkアプリケーションで選択したフォルダまたはファイルをページに追加する手順は次のとおりです(第5.2.1項「Frameworkアプリケーションの作成方法」を参照)。

1. 第7.2.1項「サービスを利用するようにアプリケーションを準備する方法」の手順に従い、セキュリティを実装します。

2. ドキュメント・サービス・タスク・フローを追加する場合、アプリケーションにドキュメント・サービスを追加するコンテンツ・リポジトリ接続を作成します(第29章「ドキュメント・サービスの統合」を参照)

3. タスク・フローを追加するアプリケーションでページを作成するか開きます(第5.3項「ポータルへのページの追加」を参照)。

4. フォルダまたはファイルを表示するタスク・フローをアプリケーションのエンド・ユーザーが編集することを許可するかどうかを検討してください。

- 実行時のページ編集を有効にするには、第19章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

- アプリケーションのエンド・ユーザーが「編集」操作を使用してコンテンツ・プレゼンタまたはドキュメント・リスト・ビューア・タスク・フローをカスタマイズすることを許可するには、Show Detail Frameコンポーネント内にタスク・フローを追加します(第19.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」を参照)。

5. 「アプリケーション・リソース」パネルで、「接続」、「コンテンツ・リポジトリ」の順に移動します。

6. 接続の名前を確認した後、必要に応じてそれを開いて、個々のフォルダまたはファイルに移動します。

7. 図30-22 (ルート・フォルダ)、図30-23 (サブフォルダ)および図30-24 (個別ファイル)に示すように、フォルダまたはファイルをページにドラッグし、マウス・ボタンを放して使用可能なタスク・フローおよびドキュメントコンポーネントのメニューを表示します。

図30-22 ポータル・ページへのコンテンツ・リポジトリ・ルート・フォルダの追加

「図30-22 ポータル・ページへのコンテンツ・リポジトリ・ルート・フォルダの追加」の説明

図30-23 ポータル・ページへのサブフォルダの追加

図30-24 ポータル・ページへのファイルの追加

8. 使用するコンテンツ・タスク・フローまたはドキュメント・コンポーネントを選択します。ページに追加するフォルダまたはファイルで特定のタスク・フローがサポートされない場合、このメニューにタスク・フローは表示されません。

注意:

コンテンツ・プレゼンタ・タスク・フローは、接続するコンテンツ・リポジトリがコンテンツ・サーバーである場合にのみ使用可能です。コンテンツ・プレゼンタ・タスク・フローを選択すると、フォルダまたはファイルが該当タイプのデフォルト表示テンプレートで表示されます。

9. タスク・フローを選択すると表示される「タスク・フロー・バインディングの編集」ダイアログで、「OK」をクリックしてデフォルトのタスク・フロー・パラメータを受け入れるか、必要に応じてパラメータを変更します。詳細は、第30.7項「コンテンツ・タスク・フローのパラメータ」を参照してください。

10. ページとページ定義ファイルを保存し、ページをブラウザで実行します。これは、ページ(ページ定義ファイルではない)を右クリックし、「実行」を選択することで行います。

コンテンツ・タスク・フローのコンテンツの表示、編集および管理の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のコンテンツの使用に関する項を参照してください。

30.5 コンテンツ・タスク・フローのページへの追加

フォルダまたはファイルを含むページに「空」のコンテンツ・タスク・フローを追加する場合があります。たとえば、コンテンツ・リポジトリ接続が存在しない場合、ターゲット・アイテムに動的にバインドするパラメータとしてEL式を使用する場合などがあります。

ニーズに最適なタスク・フローを選択するのに役立つ各コンテンツ・タスク・フローの詳細は、第25章「コンテンツの統合と公開の概要」を参照してください。

Frameworkアプリケーションでコンテンツ・タスク・フローをページに追加するには:

1. 第7.2.1項「サービスを利用するようにアプリケーションを準備する方法」の手順に従い、セキュリティを実装します。

2. ドキュメント・サービス・タスク・フローを追加する場合、第29章「ドキュメント・サービスの統合」を参照してください。

3. タスク・フローを追加するアプリケーションでページを作成するか開きます(第5.3項「ポータルへのページの追加」を参照)。

4. タスク・フローをページに追加する前に、アプリケーションのエンド・ユーザーにタスク・フローを編集することを許可するかどうかを検討してください。

- 実行時のページ編集を有効にするには、第19章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

- アプリケーションのエンド・ユーザーが「編集」操作を使用してコンテンツ・プレゼンタまたはドキュメント・リスト・ビューア・タスク・フローをカスタマイズすることを許可するには、Show Detail Frameコンポーネント内にタスク・フローを追加します(第19.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」を参照)。

5. 「リソース・パレット」で、「カタログ」、「WebCenter Portal - サービス・カタログ」の順に開きます。「タスク・フロー」で、該当するコンテンツ・タスク・フローを選択し、ページ(図30-25)にドラッグしてマウス・ボタンを離します。

図30-25 JSFページへのスタンドアロン・ドキュメント・サービス・タスク・フローの追加

注意:

アプリケーションのエンド・ユーザーが「編集」操作を使用してコンテンツ・プレゼンタまたはドキュメント・リスト・ビューア・タスク・フローをカスタマイズすることを許可するには、Show Detail Frameコンポーネント内にタスク・フローをドラッグします(第19.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」を参照)。

注意:

コンテンツ・プレゼンタの表示テンプレートを使用してWikiページをFrameworkアプリケーションで表示すると、デフォルトでそのWikiページ内のリンクがドキュメント・ビューアで表示されます。コンテンツ・プレゼンタを使用してWikiページのリンクを表示する場合、adf-config.xmlファイルを編集する必要があります。詳細は、第31.3.5項「コンテンツ・プレゼンタでのWikiページ・リンクの表示」を参照してください。

6. 表示されたメニューから、「リージョン」を選択して「タスク・フロー・バインディングの編集」ダイアログを開きます(図30-26)。

図30-26 ドキュメント・エクスプローラ・タスク・フローに対するパラメータの指定

7. 「タスク・フロー・バインディングの編集」ダイアログで、「OK」をクリックしてデフォルトのタスク・フロー・パラメータを受け入れるか、必要に応じてパラメータを変更します。詳細は、第30.7項「コンテンツ・タスク・フローのパラメータ」を参照してください。

8. ページとページ定義ファイルを保存し、ページをブラウザで実行します。これは、ページ(ページ定義ファイルではない)を右クリックし、「実行」を選択することで行います。

コンテンツ・タスク・フローをページに追加した後、必要に応じて後でパラメータを変更できます。第30.6項「コンテンツ・タスク・フローのパラメータの変更」を参照してください。

コンテンツ・タスク・フローのコンテンツの表示、編集および管理の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のコンテンツの使用に関する項を参照してください。

注意:

タスク・フローに対するカスタム・アクションの追加の詳細は、第21.3.2項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法」を参照してください。

注意:

デフォルトでは、タスク・フローは実行時に全画面に表示されます。このレイアウトを変更するためにADFレイアウト・コンポーネントを使用できます。ADFレイアウト・コンポーネントの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。

30.6 コンテンツ・タスク・フローのパラメータの変更

リージョンを作成した後、コンテンツ・タスク・フローのパラメータを変更するには:

1. ページの「バインディング」ビューに移動します(「ソース」タブの横にある「バインディング」タブをクリックします)。

2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。このタスク・フローを選択します。図30-27に、「実行可能ファイル」セクションでのドキュメント・リスト・ビューア・タスク・フローの例を示します。

図30-27 「バインディング」ビューでのドキュメント・リスト・ビュー・タスク・フロー

「図30-27 「バインディング」ビューでのドキュメント・リスト・ビュー・タスク・フロー」の説明

3. 「実行可能ファイル」という見出しの横にある鉛筆アイコンをクリックして、「タスク・フロー・バインディングの編集」ダイアログを表示します。

4. 「タスク・フロー・バインディングの編集」ダイアログで、タスク・フローのパラメータ設定を指定します。詳細は、第30.7項「コンテンツ・タスク・フローのパラメータ」を参照してください。

注意:

コンテンツ・プレゼンタ・タスク・フローの場合:

- 「コンテンツ・プレゼンタ構成」ダイアログを実行時に使用してアプリケーションのエンド・ユーザーがコンテンツと表示テンプレートを選択できるようにする場合、taskFlowInstIdを除いてすべてのパラメータ値を空白にできます。アプリケーションに一意なタスク・フロー・インスタンスIDを入力します(たとえば、contentPresenterInstance1)。

- コンテンツおよび表示テンプレートを指定する場合、非UTF-8文字コードを使用してエンコードされたファイルで、コンテンツ・プレゼンタが非ASCII文字をサポートしないことに注意してください。ユーザーがそのようなファイルをコンテンツ・プレゼンタでプレビューすると、非ASCII文字は文字化けして表示されます。

図30-28 タスク・フロー・バインディング・パラメータ

「図30-28 タスク・フロー・バインディング・パラメータ」の説明

5. 「OK」をクリックして、パラメータを追加します。

30.7 コンテンツ・タスク・フローのパラメータ

各コンテンツ・タスク・フローは、独自のパラメータ・セットを持ちます。タスク・フローをページに追加する場合、こうした値を構成します。

次の項では、コンテンツ・タスク・フローのパラメータについて説明します。

- 第30.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」

- 第30.7.2項「ドキュメント・エクスプローラ・タスク・フローのパラメータ」

- 第30.7.3項「ドキュメント・リスト・ビューア・タスク・フローのパラメータ」

- 第30.7.4項「ドキュメント・マネージャ・タスク・フローのパラメータ」

- 第30.7.5項「ドキュメント・ナビゲータ・タスク・フローのパラメータ」

- 第30.7.6項「フォルダ・ビューア・タスク・フローのパラメータ」

- 第30.7.7項「最近のドキュメント・タスク・フローのパラメータ」

- 第30.7.8項「ドキュメント・ビューア・タスク・フローのパラメータ」

- 第30.7.9項「ドキュメント・ミニ・プロパティ・タスク・フローのパラメータ」

- 第30.7.10項「ドキュメント・プロパティ・タスク・フローのパラメータ」

- 第30.7.11項「リッチ・テキスト・エディタ・タスク・フローのパラメータ」

- 第30.7.12項「ドキュメント・アップロード・タスク・フローのパラメータ」

- 第30.7.13項「ドキュメント・バージョン履歴・タスク・フローのパラメータ」

30.7.1 コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート

コンテンツ・プレゼンタ・タスク・フローは、接続するコンテンツ・リポジトリがコンテンツ・サーバーである場合に使用可能です。このタスク・フローでは、即時利用可能な表示テンプレートまたはカスタム表示テンプレートで選択ドキュメントを表示します。

関連項目:

- 第30.1項「コンテンツ・プレゼンタ・タスク・フローの理解」

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

表30-4に、コンテンツ・プレゼンタ・タスク・フローのパラメータを示します。表30-5および表30-6では、templateViewおよびtemplateCategoryパラメータの値として指定できる、単一および複数のコンテンツ・アイテムの即時利用可能な表示テンプレートについて説明します。

注意:

コンテンツおよび表示テンプレートを指定する場合、非UTF-8文字コードを使用してエンコードされたファイルで、コンテンツ・プレゼンタが非ASCII文字をサポートしないことに注意してください。ユーザーがそのようなファイルをコンテンツ・プレゼンタでプレビューすると、非ASCII文字は文字化けして表示されます。

「コンテンツ・プレゼンタ構成」ダイアログを実行時に使用してアプリケーションのエンド・ユーザーがコンテンツと表示テンプレートを選択できるようにする場合、taskFlowInstIdを除いてすべてのパラメータ値を空白にできます。アプリケーションに一意なタスク・フロー・インスタンスIDを入力します(たとえば、contentPresenterInstance1)。

実行時に、適切な権限を持つエンド・ユーザーが編集可能なページでコンテンツ・プレゼンタ・タスク・フローのパラメータを次の2つの方法で編集できます。

- タスク・フローで構成の「編集」アイコンをクリックして、コンテンツおよび表示テンプレートを指定できる「コンテンツ・プレゼンタ構成」ダイアログを表示します。「コンテンツ・プレゼンタ構成」ダイアログの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のコンテンツ・プレゼンタを使用したコンテンツの公開に関する項を参照してください。

- タスク・フローのプロパティの「編集」アイコンをクリックして、タスク・フローのパラメータを設定および変更できる「コンポーネント・プロパティ」ダイアログを表示します。この方法で設定するパラメータは一般に、Frameworkアプリケーションを作成する開発者の設計時の使用、またはパラメータをEL式にバインドする高度なユーザーを想定しています。エンド・ユーザーが「コンポーネント・プロパティ」ダイアログでパラメータ値を変更すると、「コンテンツ・プレゼンタ構成」ダイアログで指定した値が新しい値によりオーバーライドされます。

表30-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

パーソナライズ・コンダクタおよびシナリオの詳細は、第66章「WebCenterポータル・アプリケーションのパーソナライズ」を参照してください。

datasource (続き)

ここで:

- 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「WebCenter Portal: Frameworkアプリケーションのファイル」(connections.xmlの詳細)を参照してください。

- namespace = 指定のシナリオを含むネームスペースの名前。

- scenario_name = コンテンツ・プレゼンタで使用するシナリオの名前。

datasourceType

コンテンツのデータ・ソース・タイプ。有効な値は、次のとおりです:

- dsTypeSingleNode: 単一のコンテンツ・アイテム。

- dsTypeFolderContents: フォルダのコンテンツ。

- dsTypeQueryExpression: 問合せの結果。

- dsTypeMultiNode: コンテンツ・アイテムの順序付けされたリスト。

- dsTypeScenarioResults: 指定シナリオの結果。第66章「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: Spacesユーザーズ・ガイド』のコンテンツ・プレゼンタを使用したコンテンツの公開に関する項およびOracle Site Studioのドキュメント・ライブラリを参照してください。

taskFlowInstId

このタスク・フローの一意の識別子で、タスク・フロー・インスタンスとそのカスタマイズ設定およびパーソナライズ設定との関連付けの維持、および保存された問合せの管理するために内部的に使用されます。この値は、コンテンツ・プレゼンタ・タスク・フローのコンテンツを表示し、個々のファイルまたはフォルダのコンテンツを「アプリケーション・リソース」パネルからページに追加したときに自動的に生成されます。コンテンツ・プレゼンタ・タスク・フローを「リソース・パレット」からページに追加したときは、この値は空白です。この値を入力または編集して、タスク・フローの一意の識別子を設定します。

注意: CMIS問合せをdatasourceとして使用するには、有効なtaskFlowInstIdが必要です。

templateCategory

複数のコンテンツ・アイテムについて結果をレンダリングする際に使用する表示テンプレート・カテゴリID。このIDは、即時利用可能な表示テンプレート(表30-6)のデフォルト・テンプレート・カテゴリ、または第28.4項「コンテンツ・プレゼンタ表示テンプレートの作成」の記載に従って定義された複数のコンテンツ・アイテム用の表示テンプレートのために作成されたカスタム・カテゴリを表します。

templateView

単一のコンテンツ・アイテムについて結果をレンダリングする際に使用する表示テンプレート・ビューID。固有のコンテンツ・タイプについて、またはカテゴリID別リストベースのテンプレートについてリソース・マネージャで構成されたテンプレートのビューIDを入力します。このIDには、即時利用可能な表示テンプレート(表30-5)のいずれかまたは第28.4項「コンテンツ・プレゼンタ表示テンプレートの作成」の記載に従って定義されたカスタム表示テンプレートを参照するか、コンテンツがリージョンである場合にリージョン・テンプレートのcontentIDを設定できます。

Oracle WebCenterにより提供される即時利用可能な表示テンプレートを、表30-5および表30-6に示します。

表30-5 単一のコンテンツ・アイテムを表示するための即時利用可能なテンプレート

単一のコンテンツ・アイテムの表示テンプレート

ビューID

説明

デフォルトのドキュメント詳細ビュー

oracle.webcenter.content.templates.default.document.details

単一のコンテンツ・アイテムについて、作成日、変更日、作成ユーザー名、変更ユーザー名、パスおよびコメントといった詳細情報を表示します。

デフォルトのリスト・アイテム・ビュー

oracle.webcenter.content.templates.default.list.item

個々のアイテム表示のために複数のコンテンツ・アイテム・ビューによって使用されます。クリック時にアイテムを表示またはダウンロードするリンクとしてアイコンおよびアイテム名を含む単一行を表示します。

デフォルトのビュー
(テンプレートが選択されていない場合のデフォルト)

oracle.webcenter.content.templates.default.detail

ブラウザで直接(イメージ、HTML、テキスト)またはクリック時に関連ファイルをダウンロードするリンクとして、単一のコンテンツ・アイテムを表示します。

表30-6 複数のコンテンツ・アイテムを表示するための即時利用可能なテンプレート

複数のコンテンツ・アイテムの表示テンプレート

ビューID

説明

アコーディオン・ビュー

oracle.webcenter.content.templates.default.list.panel.accordion

複数のコンテンツ・アイテムをアコーディオン形式で表示します。各アイテムを開くと詳細が表示されます。

箇条書きビュー

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

複数のコンテンツ・アイテムをタブとして表示します。タブを選択すると、アイテムの詳細が表示されます。単純なリストにコンテンツ・アイテムが表示されます。

30.7.2 ドキュメント・エクスプローラ・タスク・フローのパラメータ

ドキュメント・エクスプローラ・タスク・フローは、フォルダおよびファイルのリストを、2つのペイン(フォルダを表示した左のペインと現在選択しているフォルダのコンテンツを表示した右のペイン)で表示します。フォルダおよびファイルの表示、管理およびコラボレーションのための機能豊富なドキュメント・タスク・フローです。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のドキュメント・エクスプローラ・タスク・フローの理解に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・エクスプローラ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-7に、ドキュメント・エクスプローラ・タスク・フローのパラメータを示します。

表30-7 ドキュメント・エクスプローラ・タスク・フローのパラメータ

パラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のコンテンツ・リポジトリの登録に関する項を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

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}: パネルを開きます。

30.7.3 ドキュメント・リスト・ビューア・タスク・フローのパラメータ

ドキュメント・リスト・ビューア・タスク・フローでは、単一のペインにフラット・リストとしてフォルダおよびファイルが表示されます。このタスク・フローでは、ユーザーがフォルダ階層をナビゲートし、検索問合せをカスタマイズできます。このタスク・フローは固有のニーズに役立つ可能性がありますが、その検索機能はコンテンツ・プレゼンタ・タスク・フローでレプリケートおよび拡張されています。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のドキュメント・リスト・ビューア・タスク・フローの理解に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・リスト・ビューア・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-8に、ドキュメント・リスト・ビューア・タスク・フローのパラメータを示します。

表30-8 ドキュメント・リスト・ビューア・タスク・フローのパラメータ

タスク・フローのパラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のコンテンツ・リポジトリの登録に関する項を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

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」になります。

30.7.4 ドキュメント・マネージャ・タスク・フローのパラメータ

ドキュメント・マネージャ・タスク・フローは、フォルダおよびファイルをlayoutパラメータで指定したレイアウトで表示します。フォルダおよびファイルを2つのペイン(explorerレイアウト)、現在のフォルダのコンテンツのみを表示する単一ペイン(tableレイアウト)またはルート・フォルダから始まるフォルダ階層を表示する単一ペイン(treeTableレイアウト)に表示します。explorerレイアウトはドキュメント・エクスプローラ・タスク・フローと同一のもので、showDocuments、showFoldersおよびtreeNavCollapsedプロパティを持ちません。

ドキュメント・マネージャ・タスク・フローでは、フォルダおよびファイルのコピー、移動、貼付け、削除など、包括的なドキュメント管理機能が提供されます。

関連項目:

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のドキュメント・マネージャ・タスク・フローの理解に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・マネージャ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-9に、ドキュメント・マネージャ・タスク・フローのパラメータを示します。

表30-9 ドキュメント・マネージャ・タスク・フローのパラメータ

タスク・フローのパラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のコンテンツ・リポジトリの登録に関する項を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

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パラメータを持ちません。図30-3を参照してください。

- ${'table'}: 現在のフォルダのコンテンツを単一のペインに表示します。フォルダをクリックするとドリルダウンでき、ペインがフォルダ・コンテンツとともにリフレッシュされます。図30-4を参照してください。

- ${'treeTable'}: ルート・フォルダから始まるフォルダ階層が単一のペインに表示されます。フォルダを展開および縮小できます。図30-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式を指定できます。

デフォルト: 現在のスペースの指定接続で構成されたコンテンツ・リポジトリのルート・フォルダ。

30.7.5 ドキュメント・ナビゲータ・タスク・フローのパラメータ

ドキュメント・ナビゲータ・タスク・フローでは、フォルダおよびファイルが単一のペインに表示されます。フォルダを展開および縮小して、現在のフォルダのフォルダ階層を表示できます。このタスク・フローでは、エンド・ユーザーが使用できるオプション・メニューはありません。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のドキュメント・ナビゲータ・タスク・フローの理解に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・ナビゲータ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-10に、ドキュメント・ナビゲータ・タスク・フローのパラメータを示します。

表30-10 ドキュメント・ナビゲータ・タスク・フローのパラメータ

パラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のコンテンツ・リポジトリの登録に関する項を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

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式を指定できます。

デフォルト: 現在のスペースの指定接続で構成されたコンテンツ・リポジトリのルート・フォルダ。

30.7.6 フォルダ・ビューア・タスク・フローのパラメータ

フォルダ・ビューア・タスク・フローでは、単一ペインにフラット・リストとしてフォルダのコンテンツのリストが表示されます。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のフォルダ・ビューア・タスク・フローの理解に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、フォルダ・ビューア・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-11に、フォルダ・ビューア・タスク・フローのパラメータを示します。

表30-11 フォルダ・ビューア・タスク・フローのパラメータ

パラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のコンテンツ・リポジトリの登録に関する項を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

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式を指定できます。『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の付録Bのドキュメント・サービスに関連するEL式に関する項を参照してください。

デフォルト: 現在のスペースの指定接続で構成されたコンテンツ・リポジトリのルート・フォルダ。

30.7.7 最近のドキュメント・タスク・フローのパラメータ

最近のドキュメント・タスク・フローには、現在のユーザーによって最近に作成または変更されたファイルのリストが表示されます。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の最近のドキュメント・タスク・フローの理解に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、最近のドキュメント・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-12に、最近のドキュメント・タスク・フローのパラメータを示します。

表30-12 最近のドキュメント・タスク・フローのパラメータ

パラメータ

説明

connectionName

コンテンツ・リポジトリ接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のコンテンツ・リポジトリの登録に関する項を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

groupSpace

(WebCenter Spacesでのみ使用)
タスク・フローにリストされている最近作成または変更されたドキュメントのソースであるスペースの名前。有効な値は、次のとおりです:

- 値なしまたは${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」になります。

30.7.8 ドキュメント・ビューア・タスク・フローのパラメータ

ドキュメント・ビューア・タスク・フローでは、フォルダのコンテンツが表示されるか、該当ファイル・タイプのデフォルトのテンプレートで個々のファイルのプレビューが表示されます。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のドキュメント・ビューア・タスク・フローの理解に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・ビューア・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-13に、ドキュメント・ビューア・タスク・フローのパラメータを示します。

図30-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: Spacesユーザーズ・ガイド』のファイルに関するコメントの表示、入力および削除に関する項を参照)。

- ${'tags'}。「タグ」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のタグの使用に関する項を参照)。

- ${'history'}。「履歴」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のファイルのバージョン履歴の表示および削除に関する項を参照)。

- ${'docInfo'}。「情報」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のフォルダおよびファイルのプロパティの表示および変更に関する項を参照)。

- ${'tags'}。「リンク」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリンクの使用に関する項を参照)。

- ${'autovue'}。Oracle AutoVueのインストール時に表示される「Autovue」ペインに、現在のドキュメントの1つ以上のバージョンをハイパーリンク付きのマークアップ名のリストに表示します(詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のOracle AutoVueを使用したドキュメントのコラボレーションに関する項を参照してください)。

readOnly

すべてのコンテンツ管理操作を無効にし、非表示にするかどうかを指定します。

- ${true}: コンテンツ管理を無効化します。

- ${false} (デフォルト): コンテンツ管理をユーザーに公開します。

resourceID

現在フォーカスされているリソース。この値は、フォルダIDまたはドキュメントIDです。

30.7.9 ドキュメント・ミニ・プロパティ・タスク・フローのパラメータ

ドキュメント・ミニ・プロパティ・タスク・フローでは、選択したファイルの基本プロパティが読取り専用ビューで表示されます。このタスク・フローは、すべてのファイル・タイプで利用可能です。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のドキュメント・ミニ・プロパティ・タスク・フローの理解に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・ミニ・プロパティ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-14に、ドキュメント・ミニ・プロパティ・タスク・フローのパラメータを示します。

表30-14 ドキュメント・ミニ・プロパティ・タスク・フローのパラメータ

パラメータ

説明

resourceID

基本プロパティを表示するドキュメントのID。

30.7.10 ドキュメント・プロパティ・タスク・フローのパラメータ

ドキュメント・プロパティ・タスク・フローには、選択したファイルの基本プロパティおよびアドバンスト・プロパティに加えて、プロパティ値を変更するための「編集」ボタンが表示されます。これは、すべてのファイル・タイプで選択可能です。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のドキュメント・プロパティ・タスク・フローの理解に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・プロパティ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-15に、ドキュメント・プロパティ・タスク・フローのパラメータを示します。

表30-15 ドキュメント・プロパティ・タスク・フローのパラメータ

パラメータ

説明

resourceID

基本プロパティおよびアドバンスト・プロパティを表示するドキュメントのID。

readOnly

エンド・ユーザーがドキュメント・プロパティを編集することを許可するかどうかを指定します。

- ${true}: 「基本」および「アドバンスト・プロパティ」ペインで「編集」ボタンを表示せず、したがってエンド・ユーザーがドキュメント・プロパティを編集する機能を無効にします。

- ${false}(デフォルト): 「基本」および「アドバンスト・プロパティ」ペインで「編集」ボタンを表示し、エンド・ユーザーがドキュメント・プロパティを編集することを許可します。

30.7.11 リッチ・テキスト・エディタ・タスク・フローのパラメータ

リッチ・テキスト・エディタ・タスク・フローでは、リッチ・テキスト・エディタにHTMLまたはWikiドキュメントが表示されます。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリッチ・テキスト・エディタ(RTE)の使用に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、リッチ・テキスト・エディタ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-18に、リッチ・テキスト・エディタ・タスク・フローのパラメータを示します。

表30-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: Spacesユーザーズ・ガイド』のファイルへのコメントの表示、入力および削除に関する項を参照)。

- ${'tags'}。「タグ」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のタグの使用に関する項を参照)。

- ${'history'}。「履歴」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のファイル・バージョン履歴の表示および削除に関する項を参照)。

- ${'docInfo'}。「情報」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のフォルダおよファイル・プロパティの表示および変更に関する項を参照)。

- ${'links'}。「リンク」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリンクの使用に関する項を参照)。

- ${'recommendations'}。「推奨」ペインを表示します(『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の推奨の使用に関する項を参照)。

注意: 値は大/小文字を区別します。

30.7.12 ドキュメント・アップロード・タスク・フローのパラメータ

ドキュメント・アップロード・タスク・フローでは、ユーザーが新しいドキュメントをページにアップロードできる「アップロード」ダイアログが表示されます。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の新規ファイルのアップロードに関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・アップロード・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-18に、ドキュメント・アップロード・タスク・フローのパラメータを示します。

表30-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'}

30.7.13 ドキュメント・バージョン履歴・タスク・フローのパラメータ

ドキュメント・バージョン履歴・タスク・フローでは、選択したファイルのバージョン・リストが読取り専用ビューで表示されます。このタスク・フローは、すべてのファイル・タイプで利用可能です。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のドキュメント・バージョン履歴・タスク・フローの理解に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、ドキュメント・バージョン履歴・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-18に、ドキュメント・バージョン履歴・タスク・フローのパラメータを示します。

表30-18 バージョン履歴・タスク・フローのパラメータ

パラメータ

説明

horizontalLayout

バージョン履歴情報のレイアウト方向を指定します。

- ${vertical} (デフォルト): 垂直方向(図30-14「ファイルのバージョン履歴タスク・フロー: 垂直レイアウト」を参照)。

- ${horizontal}: 水平方向(図30-15「ファイルのバージョン履歴タスク・フロー: 水平レイアウト」を参照)。

resourceID

バージョン履歴を表示するドキュメントのID。

readOnly

すべてのコンテンツ管理操作を無効にし、非表示にするかどうかを指定します。

- ${true}: コンテンツ管理を無効化します。
${false} (デフォルト): コンテンツ管理をユーザーに公開します。

30.7.14 AutoVueタスク・フローのパラメータ

AutoVueタスク・フローでは、Oracle AutoVue機能が統合されており、ユーザーがドキュメントのレビューおよび共同作業ができます。

関連項目:

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のOracle AutoVueを使用したドキュメントの共同作業に関する項

- 第30.5項「コンテンツ・タスク・フローのページへの追加」

タスク・フローをページに追加すると、AutoVueタスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表30-19に、AutoVueタスク・フローのパラメータを示します。

表30-19 AutoVueタスク・フローのパラメータ

パラメータ

説明

resourceId

AutoVueタスク・フローで表示するドキュメントのID。

31 Wikiとブログの統合

WebCenter Portal: FrameworkアプリケーションではWikiとブログの機能を統合できるので、アプリケーション・ユーザーが共同作業を行い、コンテンツとアイデアを共有できます。

この章では、Wikiおよびブログの機能をFrameworkアプリケーションに統合する方法について説明します。次の項が含まれます:

- 第31.1項「Wikiとブログの概要」

- 第31.2項「Wikiとブログの要件」

- 第31.3項「Wikiの統合」

- 第31.4項「ブログの統合」

31.1 Wikiとブログの概要

Wikiは、ユーザーが登録の必要なしに参照、更新および削除できる、有用なコンテンツや情報の集合です。このように簡単に対話および様々な操作ができることから、Wikiは複数の人が一緒に記述されたコンテンツを作成できる、コラボレイティブな作成のための効果的なツールとなっています。

ブログは一般的に、個々のユーザーの経験および意見の個人的な記録です。どのようなタイプのアイデア、計画または視点のディスカッションやエバンジャライズにも役立つツールを提供します。ブログは、選択したグループの人々またはより広範な対象読者を想定して作成できます。一般的に各ブログには、様々なブログ投稿が含まれており、新たに追加されたブログ投稿が上に表示されます。ブログでは、全体的な概念に関する読者のコメントを歓迎します。

ドキュメント・サービスを使用することで、WikiとブログをFrameworkアプリケーションに統合できます。アプリケーションで公開できるWikiページまたはブログの数に制限はありません。

31.2 Wikiとブログの要件

ドキュメント・サービスでは、Wikiおよびブログの機能をサポートするために、Content Serverを利用します。FrameworkアプリケーションでWikiおよびブログの機能を使用するには、次の前提条件を満たす必要があります。

- Content Server 11gがWebCenter Portalのデフォルトのコンテンツ・リポジトリとしてインストールおよび構成されていることが必要です。Wikiブログ機能は、Content Server 10gでは使用できません。Content Server 11gのインストールおよび構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のコンテンツ・リポジトリの管理に関する項を参照してください。

- Content Server 11gへの接続が確立されていることが必要です。詳細は、第26.2.1項「Oracle Content Serverアダプタに基づいてコンテンツ・リポジトリ接続を作成する方法」を参照してください。

- 必要に応じて第7.2項「サービスを利用するためのフレームワーク・アプリケーションの準備」に記載された手順を完了します。たとえば、ブログやWikiのドキュメントの作成時または更新時など、アクティビティを追跡するためにアクティビティ・ストリーム機能を使用できます。アプリケーションのユーザーは、意見を表明するためにWikiのドキュメントおよびブログの投稿にコメントを追加できます。コメントおよびアクティビティ・ストリームの機能を有効にするには、WebCenterスキーマがインストールされたデータベースへの接続を登録する必要があります。

こうした要件を満たした後、ドキュメント・サービスを使用してFrameworkアプリケーションにWikiとブログを追加できます。

- アプリケーションにWikiを追加するには、追加Wikiドキュメント・アクションを提供するドキュメント・サービス・タスク・フロー(ドキュメント・エクスプローラ・タスク・フローなど)を追加する必要があります。第31.3項「Wikiの統合」を参照してください。

- アプリケーションにブログを追加するには、ブログ・タスク・フローを使用します。第31.4項「ブログの統合」を参照してください。

FrameworkアプリケーションでWikiおよびブログをPDFに変換する場合、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWikiおよびブログのPDF変換の有効化に関する項に記載されているように、アプリケーション管理者がWebCenter Conversionコンポーネントを構成する必要があります。

31.3 Wikiの統合

次の項では、FrameworkアプリケーションにWikiドキュメントを追加するために必要な情報を提供しています。

- 第31.3.1項「ドキュメント・エクスプローラ・タスク・フローに関する必要な知識」

- 第31.3.2項「Wiki機能を提供するためのドキュメント・エクスプローラ・タスク・フローの追加」

- 第31.3.3項「ドキュメント・エクスプローラ・タスク・フローのパラメータの変更」

- 第31.3.4項「実行時の処理」

- 第31.3.5項「コンテンツ・プレゼンタでのWikiページ・リンクの表示」

31.3.1 ドキュメント・エクスプローラ・タスク・フローに関する必要な知識

実行時にWikiドキュメントを追加および管理する機能をアプリケーション・ユーザーに提供するには、Frameworkアプリケーションにドキュメント・エクスプローラ・タスク・フローを追加する必要があります。設計時にこのタスク・フローを追加した場合、エンド・ユーザーのためにアプリケーションに組み込まれ、実行時にWikiドキュメントを操作できます。

ドキュメント・エクスプローラ・タスク・フローには、パラメータが関連付けられています。詳細は、第30.7.2項「ドキュメント・エクスプローラ・タスク・フローのパラメータ」を参照してください。

31.3.2 Wiki機能を提供するためのドキュメント・エクスプローラ・タスク・フローの追加

Wiki機能の有効化のためにFrameworkアプリケーションを準備し、ドキュメント・エクスプローラ・タスク・フローを追加するには:

1. 第31.2項「Wikiとブログの要件」に記載された要件を満たしていることを確認します。

注意:

接続を設定する際、認証方法を選択する必要があります。アイデンティティ伝播を選択した場合、アプリケーションにADFセキュリティを実装し、Content ServerでSecure Socket Layer (SSL)を構成する必要があります。

外部アプリケーションを選択した場合、Content Serverに対するユーザーの認証に使用する外部アプリケーションを指定する必要があります。

詳細は、第7.2.1.1項「サービスのセキュリティの実装」を参照してください。

2. Wiki機能を提供するJSFページを作成するか開きます(第5.3項「ポータルへのページの追加」を参照)。

3. ドキュメント・エクスプローラ・タスク・フローをページに追加する方法を選択します。

- 選択したフォルダまたはファイルが事前移入されたドキュメント・エクスプローラ・タスク・フローを追加する場合、第30.4項「選択したフォルダまたはファイルのページへの追加」を参照してください。

- タスク・フローのメニューおよびアクションを使用して移入できる「空」のタスク・フローとしてドキュメント・エクスプローラ・タスク・フローをスタンドアロンで追加する場合、第30.5項「コンテンツ・タスク・フローのページへの追加」を参照してください。

ドキュメント・エクスプローラ・タスク・フローに設定できるパラメータの詳細は、第30.7.2項「ドキュメント・エクスプローラ・タスク・フローのパラメータ」を参照してください。

ページが実行されると、図31-1に示すようにドキュメント・エクスプローラ・タスク・フローがデフォルト・ブラウザに表示されます。アプリケーション・ユーザーは、「新規Wikiドキュメント」をクリックすることによりWikiドキュメントを作成できます。

図31-1 新規Wikiドキュメントの作成

31.3.3 ドキュメント・エクスプローラ・タスク・フローのパラメータの変更

ドキュメント・エクスプローラ・タスク・フローのパラメータを変更する方法は、他のドキュメント・サービス・タスク・フローと同じです。詳細は、第30.6項「コンテンツ・タスク・フローのパラメータの変更」を参照してください。変更可能な特定のパラメータの詳細は、第30.7.2項「ドキュメント・エクスプローラ・タスク・フローのパラメータ」を参照してください。

31.3.4 実行時の処理

実行時に、認証されたユーザーはWikiの機能が公開されたFrameworkアプリケーションにWikiドキュメントを作成できます。またユーザーは、Wikiドキュメントの編集、ダウンロード、名前の変更、共有およびサブスクライブを行い、その履歴とプロパティを表示できます。

実行時に、ドキュメント・エクスプローラ・タスク・フローを介して公開したフォルダが、ルート・フォルダとして表示されます。アプリケーション・ユーザーは、「新規Wikiドキュメント」(図31-4)をクリックして空白のWikiドキュメントが表示されたリッチ・テキスト・エディタ (RTE) (図31-3)を開き、Wikiドキュメントを作成できます。

図31-2 新規Wikiドキュメントの作成

ユーザーは、完全に統合されたHTMLテキスト・エディタ(図31-3)であるリッチ・テキスト・エディタ(RTE)を使用して、Wikiコンテンツを追加および編集できます。

図31-3 新規Wikiドキュメントを表示したリッチ・テキスト・エディタ

デフォルトでは、すべてのWikiドキュメントがルート・フォルダの直下に作成されます(図31-4)。

図31-4 「新規Wikiドキュメント」アクションを使用して作成されたWikiドキュメント

また実行時には、ユーザーはコンテンツ・プレゼンタを使用してWikiドキュメントを表示することを選択できます。

FrameworkアプリケーションのWikiドキュメントを追加および管理する実行時手順は、WebCenter Portal: Spacesの手順と同じです。一般的な情報は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のWikiドキュメントの使用に関する項を参照してください。

31.3.5 コンテンツ・プレゼンタでの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を保存します。

31.4 ブログの統合

Frameworkアプリケーションにブログ機能を統合した場合、権限のあるアプリケーション・ユーザーがブログ投稿を作成および管理できます。ブログ機能を有効にするには、ブログ・タスク・フローを追加する必要があります。

次の項では、Frameworkアプリケーションにブログを追加するために必要な情報を提供しています。

- 第31.4.1項「ブログ・タスク・フローの理解」

- 第31.4.2項「ページへのブログの追加」

- 第31.4.5項「ブログ・タスク・フローのパラメータ」

- 第31.4.4項「ブログ・タスク・フローのパラメータの変更」

- 第31.4.3項「実行時の処理」

31.4.1 ブログ・タスク・フローの理解

他のページ・コンポーネントとともにブログをページに含める場合、ブログ・タスク・フローを使用して1つ以上のブログ要素をページに追加できます。表31-1にブログ・タスク・フローとその説明を示します。

表31-1 ブログ・タスク・フロー

ブログ・タスク・フロー

説明

ページに公開された例

ブログ・アーカイブ

日付に基づいてブログのコンポジット・リストを表示します。

ブログ・バナー

ブログのバナーを表示します。

ブログ・ダイジェスト

ブログまたはブログ投稿を表示します。

最新のブログ投稿

最新のブログ投稿のリストを表示します。

この要素は、デフォルトのブログには含まれていません。

ブログ

デフォルトのデザインでブログまたはブログ投稿を表示します。

デフォルト設計には「最新の投稿」は含まれません。

31.4.2 ページへのブログの追加

Frameworkアプリケーションでブログをページに追加するには:

1. 第31.2項「Wikiとブログの要件」に記載された要件を満たしていることを確認します。

注意:

接続を設定する際、認証方法を選択する必要があります。アイデンティティ伝播を選択した場合、アプリケーションにADFセキュリティを実装し、Content ServerでSecure Socket Layer (SSL)を構成する必要があります。

外部アプリケーションを選択した場合、Content Serverに対するユーザーの認証に使用する外部アプリケーションを指定する必要があります。

詳細は、第7.2.1.1項「サービスのセキュリティの実装」を参照してください。

2. ブログ機能を公開するアプリケーションでページを作成するか開きます(第5.3項「ポータルへのページの追加」を参照)。

3. ブログ・タスク・フローをページに追加する前に、アプリケーション・ユーザーにタスク・フローを編集することを許可するかどうかを検討してください。実行時のページ編集を有効にするには、第19章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

4. 既存のフォルダを使用してデフォルト・ブログ・ページを作成するか、個々のブログ・タスク・フローを選択してカスタム・ブログを作成することで、ページにブログを追加します。

- 第31.4.2.1項「既存のフォルダを使用したデフォルト・ブログの追加」

- 第31.4.2.2項「ブログ・タスク・フローを使用したページへのカスタム・ブログの追加」

31.4.2.1 既存のフォルダを使用したデフォルト・ブログの追加

既存のフォルダがある場合、すでにブログ投稿が含まれている可能性があります。新しい空白のブログを作成する(第31.4.2.2項「ブログ・タスク・フローを使用したページへのカスタム・ブログの追加」を参照)かわりに、そのフォルダをブログ用のブログ投稿のソースとして確立できます。実行時に、ブログではそのフォルダ内のブログ投稿が表示されます。

選択したフォルダおよびそのコンテンツをページでブログとして公開するには:

1. 「アプリケーション・リソース」パネルで、「接続」、「コンテンツ・リポジトリ」の順に移動します。

2. Content Server接続の名前を特定し、その接続を開いてブログ・フォルダとして確立するフォルダにナビゲートします。

ヒント:

任意のフォルダをブログとして公開できます。ブログをより適切に編成するために、各ブログ・フォルダを親フォルダ(たとえば、Blogsというフォルダ)に保存することを検討してください。ドキュメント・サービス・インタフェースまたはコンテンツ・サーバー・コンソールのいずれかを使用してフォルダを作成できます。

ブログ・フォルダに格納されたファイルは、そのメタデータのTypeフィールドでブログ投稿として識別され、Blog Postに設定されます。TypeをBlog Postに設定しないと、HTMLファイルをブログ・フォルダにアップロードしてもブログ投稿として公開されません。

3. ページにフォルダをドラッグしてマウス・ボタンを離すと、使用可能なすべてのタスク・フローを示すメニューが開きます(図31-5)。

図31-5 選択したフォルダで使用可能なタスク・フローのメニュー

4. メニューから、「ブログ」を選択して「タスク・フロー・バインディングの編集」ダイアログを開きます(図31-6)。

図31-6 ブログ・タスク・フローに対するパラメータの指定

「図31-6 ブログ・タスク・フローに対するパラメータの指定」の説明

5. 「タスク・フロー・バインディングの編集」ダイアログでは、選択したフォルダのリソースIDがresourceId値に自動的に移入されます。「OK」をクリックしてデフォルトのタスク・フロー・パラメータを受け入れるか、必要に応じてパラメータを変更します。詳細は、第31.4.5.5項「ブログ・タスク・フローのパラメータ」を参照してください。

6. ページとページ定義ファイルを保存し、ページをブラウザで実行します。これは、ページ(ページ定義ファイルではない)を右クリックし、「実行」を選択することで行います。

新しいブログには、選択したフォルダと同じ名前が設定されます。フォルダの下の既存のファイルは、そのTypeプロパティがBlog Postに設定されている場合はブログ投稿になります(Content Serverのファイル・プロパティの詳細は、『Oracle WebCenter Content Content Serverユーザーズ・ガイド』の情報更新フォームに関する項を参照してください)。投稿がブログに実行時に追加されると、ブログの投稿がこのフォルダに格納されます。第31.4.3項「実行時の処理」を参照してください。

31.4.2.2 ブログ・タスク・フローを使用したページへのカスタム・ブログの追加

ページに、ページの1つのコンポーネントとしてまたはページ全体として、空白のブログ・タスク・フローを追加する場合があります。たとえば、コンテンツ・リポジトリ接続が存在しない場合やターゲット・アイテムに動的にバインドするパラメータとしてEL式を使用する場合に、第31.4.2.1項「既存のフォルダを使用したデフォルト・ブログの追加」で説明したメソッドのかわりにこのメソッドを使用します。また、個々のブログ・タスク・フローで、ブログの外観をカスタマイズできます。

カスタマイズされたブログ・タスク・フローをページに追加するには:

1. 「リソース・パレット」で、「WebCenter Portal - サービス・カタログ」を開きます。「タスク・フロー」の下で、追加するブログ・タスク・フローを選択し、ページにドラッグしてマウス・ボタンを放します。
5つの各ブログ・タスク・フローの詳細は、第31.4.1項「ブログ・タスク・フローの理解」を参照してください。

2. 表示されたメニューから、「リージョン」を選択します(図31-7)。

図31-7 リソース・パレットを使用したブログ・タスク・フローの追加

「図31-7 リソース・パレットを使用したブログ・タスク・フローの追加」の説明

3. 「タスク・フロー・バインディングの編集」ダイアログで、「OK」をクリックしてデフォルトのタスク・フロー・パラメータを受け入れるか、必要に応じてパラメータを変更します。詳細は、第31.4.5項「ブログ・タスク・フローのパラメータ」を参照してください。

4. ブログを構成するのに必要な各ブログ・タスク・フローについて、この手順を繰り返します。

5. ページとページ定義ファイルを保存し、ページをブラウザで実行します。これは、ページ(ページ定義ファイルではない)を右クリックし、「実行」を選択することで行います。

内部的には新しいブログにはresourceIDで指定したフォルダと同じ名前が設定されますが、ページに表示される名前はブログ・バナー・タスク・フローのTitleパラメータで指定した値になります。フォルダの下の既存のファイルは、そのTypeプロパティがBlog Postに設定されている場合はブログ投稿になります(Content Serverのファイル・プロパティの詳細は、『Oracle WebCenter Content Content Serverユーザーズ・ガイド』の情報更新フォームに関する項を参照してください)。投稿がブログに実行時に追加されると、ブログの投稿がこのフォルダに格納されます。第31.4.3項「実行時の処理」を参照してください。

31.4.3 実行時の処理

実行時に、ブログ・タスク・フローのresourceIDパラメータで指定したフォルダがページでブログとして公開されます。

- 第31.4.2.1項「既存のフォルダを使用したデフォルト・ブログの追加」の説明に従ってブログを作成した場合、ブログとして公開したフォルダの名前が、ブログの名前としてブログ・バナーに表示されます。

- 第31.4.2.2項「ブログ・タスク・フローを使用したページへのカスタム・ブログの追加」の説明に従ってブログを作成した場合、ブログ・タスク・フローのresourceIDパラメータに指定したフォルダの名前が、内部的なブログの名前となります。ただし、ページに表示される名前は、ブログ・バナー・タスク・フローのTitleパラメータに指定した値です。

Frameworkアプリケーションでは、認証されたユーザーはブログ投稿を作成でき、その投稿はブログ・ページに表示されます。ユーザーは、ブログ投稿の編集、ダウンロード、コメントなどを行えます。

デフォルトのブログ・ページ(図31-8)およびブログ・アーカイブ・タスク・フローでは、「アーカイブ」セクションに年および月ごとのブログ投稿へのリンクが提示されます。ある月をクリックすると、その月に作成されたすべてのブログ投稿が表示されます。

図31-8 デフォルトのブログ・ページ

「図31-8 デフォルトのブログ・ページ」の説明

ブログには、各ブログ投稿の様々な詳細が表示されます。これらには、ブログ投稿を追加したユーザーのプロファイル写真、ブログ投稿のタイトル、コンテンツ、作成または変更した日付、投稿を作成または最終変更を行ったユーザーの名前、およびブログ投稿へのコメントの数が含まれます。権限のあるユーザーは、「投稿の編集」アイコンをクリックして投稿を編集することや、「コメントの投稿」リンクをクリックしてブログ投稿に関するコメントを入力できます。

ブログ投稿のタイトルをクリックすると、ブログ投稿が開いてブログ・ページ全体が占有され(図31-9)、ブログ投稿を管理するためのコントロールが提示されます。

図31-9 ブログ投稿

「図31-9 ブログ投稿」の説明

ログインしていないパブリック・ユーザーがWebCenter Portal: Frameworkアプリケーションでブログ投稿を表示すると、各ブログ投稿に関連付けられたプロファイル写真は表示されません。パブリック・ユーザーに割り当てられたanonymous-roleは、デフォルトでプロファイルを表示する権限を付与されていないためです(表68-2「WebCenter Portalサービスの自動セキュリティ権限付与」を参照)。システム管理者は、grantPermission WLSTコマンド(Oracle Containers for J2EEセキュリティ・ガイドの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")

実行時にFrameworkアプリケーションでブログを管理する手順は、WebCenter Portal: Spacesのスペースでブログを管理する手順と同じです。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のブログの使用に関する項を参照してください。

31.4.4 ブログ・タスク・フローのパラメータの変更

ブログ・タスク・フローのパラメータを変更する手順は、他のドキュメント・サービス・タスク・フローと同じです。詳細は、第30.6項「コンテンツ・タスク・フローのパラメータの変更」を参照してください。変更可能なパラメータの詳細は、第31.4.5項「ブログ・タスク・フローのパラメータ」を参照してください。

31.4.5 ブログ・タスク・フローのパラメータ

各ブログ・タスク・フローは、独自のパラメータ・セットを持ちます。これらの値は、ページにタスク・フローを追加するときに構成でき、またいつでも変更可能です。

次の項では、ブログ・タスク・フローのパラメータについて説明します。

- 第31.4.5.1項「ブログ・アーカイブ・タスク・フローのパラメータ」

- 第31.4.5.2項「ブログ・バナー・タスク・フローのパラメータ」

- 第31.4.5.3項「ブログ・ダイジェスト・タスク・フローのパラメータ」

- 第31.4.5.4項「最近のブログ投稿タスク・フローのパラメータ」

- 第31.4.5.5項「ブログ・タスク・フローのパラメータ」

31.4.5.1 ブログ・アーカイブ・タスク・フローのパラメータ

ブログ・アーカイブ・タスク・フローでは、日付に基づいてブログのコンポジット・リストが表示されます。

関連項目:

第31.4.1項「ブログ・タスク・フローの理解」

タスク・フローをページに追加すると、ブログ・アーカイブ・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表31-2 に、ブログ・アーカイブ・タスク・フローのパラメータを示します。

表31-2 ブログ・アーカイブ・タスク・フローのパラメータ

パラメータ

説明

resourceId

ブログ・フォルダのリソースID (図31-6を参照)。次の形式で指定できます。

- connection_name/path_to_folder
ここで、connection_nameはContent Server接続の名前で、path_to_folderはブログとして公開するContent Server上のフォルダへのパスです。

- connection_name#dCollectionID:dCollectionId
ここで、connection_nameはContent Server接続の名前で、dCollectionIdはブログとして公開するContent Server上のフォルダのコレクションIDです。

31.4.5.2 ブログ・バナー・タスク・フローのパラメータ

ブログ・バナー・タスク・フローでは、ブログのバナーが表示されます。

関連項目:

第31.4.1項「ブログ・タスク・フローの理解」

タスク・フローをページに追加すると、ブログ・バナー・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表31-3に、ブログ・バナー・タスク・フローのパラメータを示します。

表31-3 ブログ・バナー・タスク・フローのパラメータ

パラメータ

説明

resourceId

ブログ・フォルダのリソースID (図31-6を参照)。次の形式で指定できます。

- connection_name/path_to_folder
ここで、connection_nameはContent Server接続の名前で、path_to_folderはブログとして公開するContent Server上のフォルダへのパスです。

- connection_name#dCollectionID:dCollectionId
ここで、connection_nameはContent Server接続の名前で、dCollectionIdはブログとして公開するContent Server上のフォルダのコレクションIDです。

imageURL

(オプション)ブログ・バナーで使用される背景イメージ。指定しない場合、現在のスキンによって提供されるイメージがデフォルトの背景イメージになります。

title

(オプション)ブログ・バナーで使用されるタイトル。

デフォルト: ブログ・フォルダ名。

31.4.5.3 ブログ・ダイジェスト・タスク・フローのパラメータ

ブログ・ダイジェスト・タスク・フローには、ブログまたはブログ投稿が表示されます。

関連項目:

第31.4.1項「ブログ・タスク・フローの理解」

タスク・フローをページに追加すると、ブログ・ダイジェスト・タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表31-4に、ブログ・ダイジェスト・タスク・フローのパラメータを示します。

表31-4 ブログ・ダイジェスト・タスク・フローのパラメータ

パラメータ

説明

resourceId

表示するターゲット・ブログ・リソース。フォルダのブログ・リストに表示するフォルダID (図31-6を参照)またはブログ投稿に表示するドキュメントIDのいずれかにできます。

フォルダは、次の形式で指定できます。

- connection_name/path_to_folder
ここで、connection_nameはContent Server接続の名前で、path_to_folderはブログとして公開するContent Server上のフォルダへのパスです。

- connection_name#dCollectionID:dCollectionId
ここで、connection_nameはContent Server接続の名前で、dCollectionIdはブログとして公開するContent Server上のフォルダのコレクションIDです。

注意: ユーザーによる新規ブログ投稿の追加(タスク・フローの「新規投稿」をクリックする)を許可するには、指定したフォルダにContent Serverに割り当てたセキュリティ・グループが必要です。

year

ブログ・エントリのフィルタに使用されるターゲット年を指定する4桁の数字。

例: 2012

month

ブログ・エントリのフィルタに使用されるターゲット月を指定する数字(1から12まで)。このパラメータを有効にするには、フィルタの年のパラメータも指定する必要があります。

例: 10 (10月)

hideComments

コメント機能が公開されるかどうかを指定します。

- 選択: 「コメント」リンクとペインは非表示になります。

- 選択解除(デフォルト): 「コメント」リンクとペインは表示されます。

pageSize

この数をブログ・ダイジェスト・ビューア内の表示ブログ投稿数が上回ると、「前へ」および「次へ」のアイコンが有効になります。

デフォルト: 10

31.4.5.4 最近のブログ投稿タスク・フローのパラメータ

ブログsw投稿タスク・フローは、最新のブログ投稿のリストを表示します。

関連項目:

第31.4.1項「ブログ・タスク・フローの理解」

タスク・フローをページに追加すると、最近のブログ投稿タスク・フローに固有のパラメータが「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表31-5に、最近のブログ投稿タスク・フローのパラメータを示します。

表31-5 最近のブログ投稿タスク・フローのパラメータ

パラメータ

説明

resourceId

ブログ・フォルダのリソースID (図31-6を参照)。次の形式で指定できます。

- connection_name/path_to_folder
ここで、connection_nameはContent Server接続の名前で、path_to_folderはブログとして公開するContent Server上のフォルダへのパスです。

- connection_name#dCollectionID:dCollectionId
ここで、connection_nameはContent Server接続の名前で、dCollectionIdはブログとして公開するContent Server上のフォルダのコレクションIDです。

recentPostListSize

表示する最近の投稿の数。

デフォルト: 10

31.4.5.5 ブログ・タスク・フローのパラメータ

ブログ・タスク・フローには、デフォルトのデザインでブログまたはブログ投稿が表示されます。

関連項目:

第31.4.1項「ブログ・タスク・フローの理解」

ブログ・タスク・フローに固有のパラメータは、「タスク・フロー・バインディングの編集」ダイアログ・ボックスに表示されます。表31-6に、ブログ・タスク・フローのパラメータを示します。

表31-6 ブログ・タスク・フローのパラメータ

パラメータ

説明

resourceId

表示するターゲット・ブログ・リソース。フォルダのブログ・リストに表示するフォルダID (図31-6を参照)またはブログ投稿に表示するドキュメントIDのいずれかにできます。

フォルダは、次の形式で指定できます。

- connection_name/path_to_folder
ここで、connection_nameはContent Server接続の名前で、path_to_folderはブログとして公開するContent Server上のフォルダへのパスです。

- connection_name#dCollectionID:dCollectionId
ここで、connection_nameはContent Server接続の名前で、dCollectionIdはブログとして公開するContent Server上のフォルダのコレクションIDです。

注意: ユーザーによる新規ブログ投稿の追加(タスク・フローの「新規投稿」をクリックする)を許可するには、指定したフォルダにContent Serverに割り当てたセキュリティ・グループが必要です。

hideComments

コメント機能が公開されるかどうかを指定します。

- 選択: 「コメント」リンクとペインは非表示になります。

- 選択解除(デフォルト): 「コメント」リンクとペインは表示されます。

pageSize

この数をブログ・タスク・フロー内の表示ブログ投稿数が上回ると、「前へ」および「次へ」のアイコンが有効になります。

デフォルト: 10

第V部

コミュニケーションとコラボレーションの有効化

第V部の内容は次のとおりです。

- 第32章「お知らせサービスの統合」

- 第33章「ディスカッション・サービスの統合」

- 第34章「インスタント・メッセージおよびプレゼンス・サービスの統合」

- 第35章「メール・サービスの統合」

- 第36章「投票サービスの統合」

32 お知らせサービスの統合

この章では、設計時に、WebCenter Portal: Frameworkアプリケーションにお知らせサービスを統合する方法について説明します。お知らせの管理および組込みの詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のお知らせおよびディスカッション・サービスの管理に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のお知らせサービスの使用に関する項

この章には次の項が含まれます:

- 第32.1項「お知らせの概要」

- 第32.2項「お知らせサービスの基本構成」

- 第32.3項「お知らせサービスの詳細情報」

32.1 お知らせの概要

お知らせサービスを使用すると、アプリケーションのページでお知らせを作成して公開できます。お知らせにアクセスすることで、コミュニティへの参加、問題の解決および知識の共有が促進されます。

リンク・サービスを使用して、イベントやディスカッションなどの他のサービスにお知らせをリンクできます。たとえば、会社が新製品をお知らせするものとすると、見込み客が他の顧客に製品について質問できるディスカッション・フォーラムに直接お知らせをリンクしたり、インスタント・メッセンジャにリンクして製品を購入するためにカスタマ・サービスの担当者と直接話したりできます。

お知らせはフォーラムレベルのお知らせとして表示することも、全体的なお知らせ(つまり、フォーラムに特定しないシステムのお知らせ)として表示することもできます。

この項には次のサブセクションが含まれます:

- 第32.1.1項「お知らせサービスの理解」

- 第32.1.2項「お知らせの要件」

- 第32.1.3項「実行時の処理」

32.1.1 お知らせサービスの理解

お知らせサービスでは、次の操作を実行できます。

- お知らせの作成。

- 既存のお知らせの編集および削除。

- お知らせのメール。

- お知らせビューのパーソナライズ。すべてのお知らせを表示するか、当日、今週、または今月送信されたお知らせのみを表示するかを選択できます。さらに、将来のお知らせ、アクティブなお知らせ、または期限切れのお知らせを表示することもできます。

- お知らせの管理。将来の日付でのお知らせの発行や、特定の日付での自動期限切れの指定など。

お知らせサービスは、アクティビティ・ストリーム、RSS、インスタント・メッセージ、プレゼンスなどのWebCenter Portal内の他の多数のサービスと統合されるため、イベントやディスカッションなどの他のサービスにお知らせをリンクできます。たとえば、会社が新製品をお知らせするものとします。お知らせから直接見込み客が他の顧客に製品について質問できるディスカッション・フォーラムへリンクしたり、インスタント・メッセンジャにリンクして製品についてカスタマ・サービスの担当者とチャットしたりできます。WebCenter Portalライブ検索ではお知らせのタイトルを検索でき、Oracle Secure Enterprise Searchではお知らせのタイトルとテキストを検索できます。

32.1.2 お知らせの要件

お知らせサービスには、ディスカッション・サーバーが必要です。Oracle Fusion Middlewareに含まれるディスカッション・サーバーをインストールして構成する必要があります。

関連項目:

Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド

32.1.3 実行時の処理

実行時に、作成権限が付与されているユーザーはお知らせを投稿でき、表示権限を持つユーザーはすべてこれらのお知らせを表示できます。たとえば、アプリケーション管理者は、このサービスを使用して、新機能の可用性やメンテナンスのための一時的なアプリケーションのシャットダウン計画を知らせることができます。

図32-1は、実行時のお知らせの例を示しています。

図32-1 お知らせ - クイック・ビュー・タスク・フローのサンプルのお知らせ

「図32-1 「お知らせ - クイック・ビュー」タスク・フローのお知らせの例」の説明

お知らせマネージャでお知らせを表示する場合は、お知らせタスク・フローがFrameworkアプリケーションに追加されていることを確認してください。その後で、アプリケーションにログインして、お知らせタスク・フローの「お知らせマネージャのオープン」アイコンをクリックします(図32-2)。

図32-2 「お知らせマネージャのオープン」アイコン

「図32-2 「お知らせマネージャのオープン」アイコン」の説明

注意:

ユーザーが必要な権限を持っていない場合は、「お知らせマネージャのオープン」アイコンは表示されません。

図32-3は、お知らせマネージャ内のお知らせの例を示しています。

図32-3 お知らせマネージャのお知らせの例

「図32-3 お知らせマネージャのお知らせの例」の説明

Frameworkアプリケーションのアプリケーション管理者は、ページ上のお知らせの表示を制御する「作成」、「RSS」および「リフレッシュ」アイコンと、「表示」ドロップダウン・リストを提供するお知らせマネージャにアクセスできます。リスト内のお知らせごとに、「編集」、「削除」、「メール」および「リンク」アイコンを使用できます。

ユーザーがページに対してどのような権限を持っていて、アプリケーションにWebCenter Portalの必要なサービスが構成されているかどうかに応じて、お知らせマネージャのオプションの一部はユーザーに表示されないことがあります。たとえば、「削除」アイコンは、管理権限を持つユーザーにのみ表示されます。

実行時のサービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

32.2 お知らせサービスの基本構成

この項では、このサービスをアプリケーションに追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第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

「図32-4 「ディスカッション接続の作成」、手順1」の説明

6. 「次へ」をクリックします。

7. 「一般」ページで、必須パラメータの値を入力します。

- URL: ディスカッション・サーバーのURLを入力します。例: http://discussions.example.com:8888/owc_discussions。

- Admin User: ディスカッション・サーバー管理者のユーザー名(adminなど)。このアカウントは、WebCenter Portalユーザーのかわりに管理操作を実行するため、ディスカッション・サービスおよびお知らせサービスによって使用されます。
WebCenter Portal: Spacesでは、このアカウントはほとんどの場合スペース関連のディスカッションおよびお知らせの管理に使用されます。このユーザーがスーパー管理者である必要はありません。ただし、このユーザーには、Spacesの現在のルート・カテゴリ(つまり、すべてのスペース関連のディスカッションおよびお知らせが格納される(ディスカッション・サーバー上の)カテゴリ)の管理権限が必要です。

注意:

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管理者ガイド』のWebCenter PortalのアプリケーションおよびコンポーネントのためのWS-Securityの構成に関する項の章を参照してください。

図32-5 「ディスカッション接続の作成」、手順2

「図32-5 「ディスカッション接続の作成」、手順2」の説明

9. 「接続のテスト」をクリックし、成功した場合は、「次へ」をクリックします。

10. 「ディスカッション接続の作成 - ステップ3/3」ページで、その他のパラメータを構成できます。例:
application.root.category.id: (WebCenter Portal: Spacesのみ)すべてのディスカッション・フォーラムが格納される、ディスカッション・サーバーのアプリケーション・ルート・カテゴリ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. 第3章「開発環境の準備」の手順に従い、アプリケーションにセキュリティを実装し、新しいカスタマイズ可能なページを作成します。

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 ページ・データ・バインディング定義

「図32-6 ページ・データ・バインディング定義」の説明

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図32-7)で、必要に応じてバインディング・パラメータ値を変更します。

図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-8 オプションのパラメータを使用した「お知らせ - クイック・ビュー」」の説明

図32-13では、freeFlowViewパラメータが${true}に設定された実行時の「お知らせ - クイック・ビュー」を示しています。

図32-9 freeFlowViewパラメータを使用した「お知らせ - クイック・ビュー」

「図32-9 freeFlowViewパラメータを使用した「お知らせ - クイック・ビュー」」の説明

32.2.3 お知らせのセキュリティの設定

デフォルトでは、Frameworkアプリケーションの認証されたユーザーがお知らせを表示しそれに関与できます。WebCenter Portalアプリケーションにログインしているユーザーはお知らせを表示でき、十分な権限を持つユーザーはお知らせを作成できます。お知らせを作成するには、バックエンド・ディスカッション・サーバーのモデレータまたは管理者である必要があります。

保護されていないFrameworkアプリケーションでは、アイデンティティ伝播は実行できません。ユーザーはゲスト(匿名)ユーザーで、パブリック・カテゴリとパブリック・フォーラムのみを表示できます。保護されていないアプリケーションでは、お知らせからフェッチされたparentId(フォーラムID)がパブリック・フォーラムとなります。フォーラムがパブリックでない場合は、エラーがレポートされます。parentIdパラメータが一切指定されていない場合、WebCenter Portalはグローバルなお知らせをフェッチできません(つまり、お知らせはフォーラム用にスコープ設定されない)。パブリック・ユーザーはグローバルなお知らせを使用できません。各Frameworkアプリケーションは、グローバルなお知らせに依存するのではなく、専用のフォーラムIDを予約する必要があります。

ADFセキュリティで保護されたFrameworkアプリケーションでは、アイデンティティの伝播が有効です。アイデンティティに基づいて適切な権限がマッチングされ、対応するアクションが有効になります。アプリケーションのログインに使用するユーザー名が、ディスカッション・サーバーのログインに使用されます。お薦めする方法は、ディスカッション・サーバーとFrameworkアプリケーションが同じアイデンティティ・ストアを指すようにすることです。このようにすると、ユーザーはアプリケーションに一度ログインすると、自動的にディスカッション・サーバーに接続できるようになります。

注意:

お知らせサービスでは、jazn-data.xmlを使用したファイルベースのものではなく、LDAPベースのアイデンティティ・ストアが必要です。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第68.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-10)。

図32-11 お知らせのポップアップ

「図32-11 お知らせのポップアップ」の説明

お知らせ - クイック・ビュー・タスク・フローには、ビューをカスタマイズするための多数のパラメータがあります。たとえば、お知らせマネージャへのリンクを削除して、管理コントロールを必要としないエンド・ユーザーにお知らせを表示できます。デフォルトでは、タスク・フローは10件のお知らせをリストしますが、この数とお知らせを表示する量は変更できます。「その他のお知らせ」リンクを使用すると、すべてのお知らせの完全なリストを含むポップアップが、ページ区切り動作で起動されます。これは、拡張クイック・ビュー(または、ミニ・ビュー)と呼ばれます。

「お知らせ - クイック・ビュー」をFrameworkアプリケーションに追加するには、第32.2.2項「お知らせサービスの設計時の追加」で、お知らせタスク・フローに対して行った手順と同じ手順を実行します。ただし、「お知らせ - クイック・ビュー」をページ上にドラッグ・アンド・ドロップします。

表32-2は、「お知らせ - クイック・ビュー」のパラメータの説明です。「お知らせ - クイック・ビュー」のルック・アンド・フィールは、これらのパラメータに指定する値で変更できます。詳細は、第32.2.2.3項「お知らせサービス・タスク・フローのパラメータを変更する方法」を参照してください。

32.3.2 「お知らせ」ビューのカスタマイズ

「お知らせ - クイック・ビュー」のルック・アンド・フィールは、パラメータ値で変更できます。たとえば、図32-12では、freeFlowViewパラメータがfalseに設定された(または空の)実行時の「お知らせ - クイック・ビュー」を示しています。

図32-12 オプションのパラメータを使用した「お知らせ - クイック・ビュー」

「図32-12 オプションのパラメータを使用した「お知らせ - クイック・ビュー」」の説明

図32-13では、freeFlowViewパラメータが${true}に設定された実行時の「お知らせ - クイック・ビュー」を示しています。

図32-13 freeFlowViewパラメータを使用した「お知らせ - クイック・ビュー」

「図32-13 freeFlowViewパラメータを使用した「お知らせ - クイック・ビュー」」の説明

32.3.3 お知らせサービス用のスペースのRSSニュース・フィードURLの取得

WebCenter Portal: Spacesの機能をWebCenter Portal: Frameworkアプリケーションで公開できます。Frameworkアプリケーション・ユーザーは、RSSニュース・フィードを通じて、特定のスペースで行われていることを知ることができます。

RSSニュース・フィードをお知らせサービス用に構成して、ユーザーがFrameworkアプリケーションからスペースのお知らせを表示できるようにします。お知らせサービス用のスペースのRSSニュース・フィードURLを取得するには、次のいずれかのSpaces APIを使用します。

- getServiceRSSFeedURL

- getServiceRSSFeedURLbyGuid

RSSフィードのURLを取得するには、スペースを(名前またはGUIDで)特定し、必要なサービスを(サービスIDで)指定する必要があります。お知らせサービスのサービスIDは、GroupSpaceWSClient.ANNOUNCEMENT_SERVICE_IDです。

これらのAPIを使用する方法の詳細は、第56.2.5.3.9項「スペース・サービスのためのRSSフィードURLの取得」を参照してください。

33 ディスカッション・サービスの統合

この章では、設計時にWebCenter Portal: Frameworkアプリケーションにディスカッション・サービスを統合する方法について説明します。ディスカッションの管理および組込みの詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のお知らせおよびディスカッション・サービスの管理に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のディスカッション・サービスの使用に関する項

この章には次の項が含まれます:

- 第33.1項「ディスカッションの概要」

- 第33.2項「ディスカッション・サービスの基本構成」

- 第33.3項「ディスカッション・サービスの詳細情報」

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管理者ガイド』のOracle WebCenter Portalのディスカッション・サーバーの管理者ロールの付与に関する項を参照してください。

図33-1は、実行時のディスカッション・フォーラムを示しています。

図33-1 実行時のディスカッション・フォーラム・タスク・フロー

「図33-1 実行時のディスカッション・フォーラム・タスク・フロー」の説明

実行時のサービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

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

「図33-2 「ディスカッション接続の作成」、手順1」の説明

6. 「次へ」をクリックします。

7. 「一般」ページで、必須パラメータの値を入力します。

- URL: ディスカッション・フォーラムおよびお知らせをホスティングする、ディスカッション・サーバーのURLを入力します。例: http://discuss-example.com:8888/owc_discussions

- Admin User: ディスカッション・サーバー管理者のユーザー名(adminなど)。このアカウントは、WebCenter Portalユーザーのかわりに管理操作を実行するため、ディスカッション・サービスおよびお知らせサービスによって使用されます。
WebCenter Portal: Spacesでは、このアカウントはほとんどの場合スペース関連のディスカッションおよびお知らせの管理に使用されます。このユーザーがスーパー管理者である必要はありません。ただし、このユーザーには、Spacesの現在のルート・カテゴリ(つまり、すべてのスペース関連のディスカッションおよびお知らせが格納される(ディスカッション・サーバー上の)カテゴリ)の管理権限が必要です。

注意:

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管理者ガイド』のWebCenter PortalのアプリケーションおよびコンポーネントのためのWS-Securityの構成に関する項の章を参照してください。

図33-3 ディスカッション接続の作成、手順2

「図33-3 「ディスカッション接続の作成」、手順2」の説明

9. 「接続のテスト」をクリックし、成功した場合は、「次へ」をクリックします。

10. 「ディスカッション接続の作成 - ステップ3/3」ページで、その他のパラメータを構成できます。
application.root.category.id: (WebCenter Portal: Spacesのみ)すべてのディスカッション・フォーラムが格納される、ディスカッション・サーバーのアプリケーション・ルート・カテゴリ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. 第7.2.1項「サービスを利用するようにアプリケーションを準備する方法」の手順に従い、アプリケーションでセキュリティを実装し、カスタマイズ可能なページを作成します。

2. ディスカッション・サービスを追加するページを開きます。

3. 「リソース・パレット」で「カタログ」、「WebCenter - Frameworkサービス・カタログ」、「タスク・フロー」と開きます。

4. 「リソース・パレット」から「ディスカッション」をドラッグし、ページの上でドロップします。

5. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

6. ディスカッション・ライブラリをプロジェクトに追加するよう要求される場合があります。この場合は、「ライブラリの追加」をクリックします。この操作の完了には時間がかかる場合があります。

7. 「タスク・フロー・バインディングの編集」ダイアログ・ボックスで、パラメータの値を入力し、「OK」をクリックします。表33-2に、パラメータを示します。

8. ページを保存し、実行します。

注意:

アプリケーションではなくIDEで接続を作成した場合、その接続をアプリケーションに追加する必要があります。たとえば、「リソース・パレット」の「IDE接続」の下にある接続を右クリックし、「アプリケーションに追加」を選択します。

アプリケーション内のディスカッション・フォーラム・タスク・フローのすべてのインスタンスは、同じディスカッション・サーバーに対して実行されます。複数のディスカッション・フォーラム・タスク・フロー・インスタンスを追加する必要はありません。これは、お知らせサービスやメール・サービスからのタスク・フローなど、バックエンド・サーバーへの接続が必要なすべてのサービス・タスク・フローに当てはまります。

ディスカッション・フォーラム・メイン・ビューには、アプリケーションで他のサービスを必要とする機能がいくつかあります。

- メイン・ビューのリンクが機能するには、リンク・サービスを構成しておく必要があります。詳細は、第42章「リンク・サービスの統合」を参照してください。

- ユーザーのプレゼンス・インジケータが機能するには、WebCenter Portalプレゼンス・サービスを構成しておく必要があります。詳細は、第34章「インスタント・メッセージおよびプレゼンス・サービスの統合」を参照してください。

- ディスカッション・サーバーとWebCenter Portalが、同じアイデンティティ・ストアを指すようにすることをお薦めします。Frameworkアプリケーションおよびディスカッション・ページがセキュアであるように構成されている場合、アプリケーションのログイン時に、ディスカッション・サービスはディスカッション・サーバー内の資格証明に従います。

33.2.2.3 ディスカッション・サービス・タスク・フローのパラメータを変更する方法

ディスカッション・サービス・タスク・フローには、オプションのタスク・フロー・バインディング・パラメータがあります。

パラメータ値は、ページにタスク・フローをドロップするときまたはページにタスク・フローを配置した後に調整できます。

1. ページの下部にある「バインディング」タブ(next to the 「ソース」タブの横)をクリックし、「タスク・フロー・バインディングの編集」ダイアログにナビゲートします。

2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。図33-4に、「実行可能ファイル」の検索タスク・フローの例を示します。

図33-4 ページ・データ・バインディング定義

「図33-4 ページ・データ・バインディング定義」の説明

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図33-5)で、必要に応じてバインディング・パラメータ値を変更します。

図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セキュリティの構成の詳細は、第68.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-6 実行時の「ディスカッション - 人気のトピック」ビュー」の説明

33.3.2 ディスカッション - 最近のトピック・タスク・フローの追加

ディスカッション - 最近のトピック・タスク・フローでは、カテゴリIDまたはフォーラムIDが指定された、すべての最近のトピック(つまり、過去2日以内に投稿されたトピック)をユーザーが参照できるビューを表示します。

ディスカッション - 最近のトピック・タスク・フローをFrameworkアプリケーションに追加するには、第33.2.2.2項「ページへのディスカッションの追加方法」で、ディスカッション・フォーラム・タスク・フローに対して行った手順と同じ手順に従い、ページ上で「ディスカッション - 最近のトピック」をドラッグ・アンド・ドロップします。

表33-2に、このタスク・フローの使用可能なパラメータを示しています。

図33-7に、ディスカッション - 最近のトピック・タスク・フローの実行時の外観を示します。トピックの投稿を表示するには、関連したトピックをクリックします。

図33-7 実行時の「ディスカッション - 最近のトピック」ビュー

「図33-7 実行時の「ディスカッション - 最近のトピック」ビュー」の説明

33.3.3 ディスカッション - 監視フォーラム・タスク・フローの追加

ディスカッション - 監視フォーラム・タスク・フローでは、特定のカテゴリIDの下で、自分のすべての監視フォーラムをユーザーが参照できるビューを表示します。

ディスカッション・フォーラムやディスカッション・トピックを監視し、最新かつ自分の活動に関連した情報を見守ることができます。監視するよう選択したフォーラムやトピックは個人用で、選択したものが自分の監視リストのビューに表示されます。監視するよう選択したフォーラムやトピックによって、他のユーザーが影響を受けることはありません。

あるユーザーがフォーラムまたはトピックに監視を配置すると、そのフォーラムまたはトピックに追加が行われるたびに、それがそのユーザーの監視対象フォーラムまたはトピックのリストに表示され、そのユーザーはメールで通知を受け取ります。

すべての監視フォーラムおよび監視トピックには、このフォーラム・タスク・フローからアクセスできます。監視フォーラムおよび監視トピックのタスク・フローでは、監視フォーラムまたは監視トピックのさらにフォーカスされたビューが提供されます。

ディスカッション - 監視フォーラム・タスク・フローをFrameworkアプリケーションに追加するには、第33.2.2.2項「ページへのディスカッションの追加方法」で、ディスカッション・フォーラム・タスク・フローに対して行った手順と同じ手順に従い、ページ上で「ディスカッション - 監視フォーラム」をドラッグ・アンド・ドロップします。

表33-2に、このタスク・フローの使用可能なパラメータを示しています。

図33-8に、ディスカッション - 監視フォーラム・タスク・フローの実行時の外観を示します。

図33-8 実行時の「ディスカッション - 監視フォーラム」ビュー

「図33-8 実行時の「ディスカッション - 監視フォーラム」ビュー」の説明

実行時にフォーラムまたはトピックを監視する方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のディスカッション・サービスの使用に関する項を参照してください。

33.3.4 ディスカッション - 監視トピック・タスク・フローの追加

ディスカッション - 監視フォーラム・タスク・フロー同様、ディスカッション - 監視トピック・タスク・フローは、特定のカテゴリIDまたはフォーラムIDの下で、自分のすべての監視トピックをユーザーが参照できるビューを表示します。

ディスカッション - 監視トピック・タスク・フローをFrameworkアプリケーションに追加するには、第33.2.2.2項「ページへのディスカッションの追加方法」で、ディスカッション・フォーラム・タスク・フローに対して行った手順と同じ手順に従い、ページ上で「ディスカッション - 監視トピック」をドラッグ・アンド・ドロップします。

表33-2に、このタスク・フローの使用可能なパラメータを示しています。

図33-9に、ディスカッション - 監視トピック・タスク・フローの実行時の外観を示します。

図33-9 実行時の「ディスカッション - 監視トピック」ビュー

「図33-9 実行時の「ディスカッション - 監視トピック」ビュー」の説明

実行時にフォーラムまたはトピックを監視する方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のディスカッション・サービスの使用に関する項を参照してください。

33.3.5 ディスカッション - クイック・ビュー・タスク・フローの追加

ディスカッション - クイック・ビュー・タスク・フローでは、人気のトピック、最近のトピック、監視トピックおよび監視フォーラムの各タスク・フローの結合されたビューを表示します。4つのタスク・フローを別々に追加するのではなく、この単一のタスク・フローで、ドロップダウン・リストを使用して4つのビューのすべてを表すことにより、エンド・ユーザーによるパーソナライズが可能になります。

デフォルトでは、監視トピックが表示されます。このタスク・フローに指定するパラメータは、categoryIdのみです。

ディスカッション - クイック・ビュー・タスク・フローをWebCenter Portal: Frameworkアプリケーションに追加するには、第33.2.2.2項「ページへのディスカッションの追加方法」で、ディスカッション・フォーラム・タスク・フローに対して行った手順と同じ手順に従い、ページ上で「ディスカッション - クイック・ビュー」をドラッグ・アンド・ドロップします。

表33-2に、このタスク・フローの使用可能なパラメータを示しています。

図33-10に、ディスカッション - クイック・ビュー・タスク・フローの実行時の外観を示します。

図33-10 実行時の「ディスカッション - クイック・ビュー」

「図33-10 実行時の「ディスカッション - クイック・ビュー」」の説明

33.3.6 ディスカッション・サービス用のスペースのRSSニュース・フィードURLの取得

WebCenter Portal: Spaces機能をFrameworkアプリケーションで公開できます。Frameworkアプリケーション・ユーザーは、RSSニュース・フィードを通じて、特定のスペースで行われていることを知ることができます。

RSSニュース・フィードをディスカッション・サービス用に構成して、Frameworkアプリケーション内でスペースのディスカッション・フォームをユーザーが表示できるようにします。ディスカッション・サービス用のスペースのRSSニュース・フィードURLを取得するには、次のいずれかのSpaces APIを使用します。

- getServiceRSSFeedURL

- getServiceRSSFeedURLbyGuid

RSSフィードのURLを取得するには、スペースを(名前またはGUIDで)特定し、必要なサービスを(サービスIDで)指定する必要があります。ディスカッション・サービスのサービスIDは、GroupSpaceWSClient.DISCUSSION_SERVICE_IDです。

これらのAPIを使用する方法の詳細は、第56.2.5.3.9項「スペース・サービスのためのRSSフィードURLの取得」を参照してください。

33.3.7 カスタム・ディスカッションAPIの使用

バックエンドのOracle WebCenter Portalのディスカッション・サーバーには、アプリケーションをさらにカスタマイズするための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

- リクエスト - 本体: フォーラム

- レスポンス - 本体: フォーラム

詳細は、第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'}に設定すると、すべてのフォーラムのスクロールが終わるまでに数分かかることがあります。

解決方法

再帰的フォーラムを表示するオプションは、パフォーマンス上の理由からお薦めしません。

問題

ユーザーはWebCenter Portalにはログオンできますが、Oracle WebCenter Portalのディスカッション・サーバーにログオンできません。

解決方法

Oracle WebCenter Portalのディスカッション・サーバーが、Frameworkアプリケーションと同一のLDAPプロバイダを使用するように構成されていることを確認してください。詳細は管理者に問い合せてください。LDAPの構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアイデンティティ・ストアの構成に関する項を参照してください。

問題

Frameworkアプリケーションからディスカッション・フォーラムにアクセスすると、次のエラー・メッセージが表示されます。

次のものに使用できるデフォルト接続またはアクティブ接続がありません: ディスカッション・フォーラム

解決方法

次の点を確認してください。

- ディスカッション・フォーラムの接続を作成済である。

- 必要なディスカッション・フォーラムの接続が、デフォルトの接続としてマークされている。

問題

ディスカッション・フォーラム・タスク・フロー上で特定の操作を実行しているときに、「フォーラムが見つかりません。」、「トピックが見つかりません。」などのエラー・メッセージが表示されます。

解決方法

次の点を確認してください。

- ディスカッション・サーバーが稼働している。

- フォーラムまたはトピックが、ディスカッション・サーバー上に存在する。

- 編集中のフォーラムまたはトピックに対して、必要な権限がある。

これらすべての設定が正しくても問題が続く場合は、管理者に詳細を問い合せてください。

問題

別のディスカッション・サーバーを使用するように接続を変更し、アプリケーション・ルート・カテゴリIDをadministrator-services-discussionsから変更した場合、「カテゴリが見つかりません。」などの例外が表示されることがあります。

解決方法

Frameworkアプリケーションのデプロイ先の管理対象サーバーを再起動します。

34 インスタント・メッセージおよびプレゼンス・サービスの統合

この章では、設計時にWebCenter Portal: Frameworkアプリケーションにインスタント・メッセージおよびプレゼンス(IMP)サービスを統合する方法について説明します。

インスタント・メッセージおよびプレゼンスの管理および組込みの詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のインスタント・メッセージおよびプレゼンス・サービスの管理に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のインスタント・メッセージおよびプレゼンス・サービスの使用に関する項

この章には次の項が含まれます:

- 第34.1項「IMPサービスの概要」

- 第34.2項「IMPサービスの基本構成」

- 第34.3項「IMPサービスの詳細情報」

34.1 IMPサービスの概要

IMPサービスを使用すると、他の認証済アプリケーション・ユーザーのプレゼンス・ステータス(オンライン、オフライン、ビジーまたは退席中)を監視できるようになります。これは、インスタント・メッセージやメールなどの対話オプションへの簡単なアクセスを提供します。さらに、自社のプレゼンスが使用できない場合(出張中など)は、サード・パーティのネットワーク・プレゼンス・サービス(Yahoo!メッセンジャーなど)に接続することもできます。

WebCenter Portalのサービスが、同一IDのユーザー名を保持しているときには、そのサービスをIMPサービス(ディスカッション、ドキュメント、メールなど)と統合できます。

この項では、IMPの機能と要件の概要を説明します。次のサブセクションが含まれます:

- 第34.1.1項「IMPサービスの理解」

- 第34.1.2項「IMPサービスの要件」

34.1.1 IMPサービスの理解

図34-1は、オンラインにいるユーザーを示す「プレゼンス」アイコンを示しています。

図34-1 「プレゼンス」アイコン(オンライン)

たとえばドキュメント・ライブラリのドキュメントの作成者としてユーザーが示されていれば、このアイコンをクリックすることでポップアップ・メニューを起動できます(図34-2)。

図34-2 「プレゼンス」アイコンのポップアップ・メニュー

「図34-2 「プレゼンス」アイコンのポップアップ・メニュー」の説明

このポップアップ・メニューには、次のアクションが含まれています。

- プロファイルの表示: 選択したユーザーのプロファイル・ページが表示されます。このページには、メールIDや連絡先電話番号などの情報が含まれています。

- メールの送信: メール・クライアント・セットの作成ウィンドウが開きます。これは、WebCenter Portalのメール・サービスまたはローカルのメール・クライアントのどちらかになります。

- 資格証明の変更: これは、外部アプリケーションを使用するかわりの手段になります。現在のユーザーに対してのみ表示されます。

- インスタント・メッセージの送信: コンピュータで実行中のインスタント・メッセージ・クライアント(Microsoft Communicator)を開きます。

連絡先名の横にあるアイコンは、各連絡先のプレゼンス状態を示します。

プレゼンス・ステータス・オプションのスクリーン・ショットやその説明など、実行時のIMPサービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

34.1.2 IMPの要件

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項「IMPサービスの接続」

- 第34.2.1.2項「IMPサービス用のMicrosoft LCS接続を設定する方法」

- 第34.2.1.3項「IMPサービス用のMicrosoft OCS接続およびMicrosoft Lync接続を設定する方法」

34.2.1.1 IMPサービスの接続

IMPサービスには、プレゼンス・サーバー(Microsoft LCS、Microsoft OCSまたはMicrosoft Lync)へのインスタント・メッセージおよびプレゼンス接続が必要になります。

独自の認証を処理するアプリケーションとWebCenter Portalのサービスが相互作用するときには、そのアプリケーションと外部アプリケーション定義を関連付けて、資格証明プロビジョニングに備えることができます。外部アプリケーションは必須です。

注意:

Oracle JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager 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

「図34-3 LCSのインスタント・メッセージおよびプレゼンス接続の作成、手順1」の説明

7. 「次へ」をクリックします。

8. 「一般」ページ(図34-4)で、Microsoft LSCインスタンスの情報を入力します。

図34-4 LCSのインスタント・メッセージおよびプレゼンス接続の作成、手順2

「図34-4 LCSのインスタント・メッセージおよびプレゼンス接続の作成、手順2」の説明

例:

- Urlはhttp://host:port/RTCです。ここで、RTCはサーバー側モジュールがデプロイされた仮想ディレクトリ名です。(詳細は、Microsoft Live Communications Server 2005のドキュメントを参照してください。)

- Domainプロパティは、後方互換性のために維持されます。これは空白のままにしてください。

- Connection Timeoutプロパティはオプションです。これは、接続の作成時にサービスがサーバーからの応答を待機する時間(秒単位)を表します。プレゼンス・サーバーが指定の時間内に応答しない場合、接続は中断され、エラーが報告されます。

- PoolNameには、Microsoft Communications Serverコンポーネントがデプロイされているプールの名前を入力します。(詳細は、Microsoft Live Communications Serverのドキュメントを参照してください。)

9. 同じページで、プレゼンス・サーバーの認証メカニズム(ユーザー名とパスワード)を利用するように、「外部アプリケーション」を選択します。
LCS接続には、外部アプリケーションが必須です。そのアプリケーションでは、プレゼンス・サーバー・ユーザーをアプリケーション・ユーザーにマップして、エンド・ユーザーが情報を要求するたびにユーザー名とパスワードを入力する必要がなくなるようにします。IMPサービス用の外部アプリケーションの構成の詳細は、第34.2.3項「IMPサービスのセキュリティの設定」を参照してください。

10. 「接続のテスト」をクリックして、接続が正常であることを確認します。

11. 「次へ」をクリックして接続を作成します。

12. 「追加プロパティ」ページ(図34-5)で、必要に応じてパラメータを追加できます。

図34-5 LCSのインスタント・メッセージおよびプレゼンス接続の作成、手順3

「図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

「図34-6 Microsoft OCSまたはMicrosoft LyncのIMP接続の作成、手順1」の説明

7. 「次へ」をクリックします。

8. 「一般」ページ(図34-7)で、Microsoft OCSまたはMicrosoft Lyncインスタンスのパラメータを入力します。

図34-7 Microsoft OCSまたはMicrosoft LyncのIMP接続の作成、手順2

「図34-7 Microsoft OCSまたはMicrosoft LyncのIMP接続の作成、手順2」の説明

例:

- URLは使用しているMicrosoft OCSまたはLyncインスタンスの場所です。これはhttp://host:port/RTCで、RTCはサーバー側モジュールがデプロイされている仮想ディレクトリ名です。(詳細は、Microsoft社のドキュメントを参照してください。)

- Domainプロパティは、後方互換性のために維持されます。これは空白のままにしてください。

- Connection Timeoutプロパティはオプションです。これは、接続の作成時にサービスがサーバーからの応答を待機する時間(秒単位)を表します。プレゼンス・サーバーが指定の時間内に応答しない場合、接続は中断され、エラーが報告されます。

- 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

「図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. 第3章「開発環境の準備」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。

2. IMPサービスを追加するページを開きます。

3. プレゼンス・サーバーに接続するようにアプリケーションが構成されていることを確認します。第34.2.1項「IMPサービスの接続の設定」を参照してください。

4. コンポーネント・パットで、「プレゼンス」コンポーネントをドラッグして、「プレゼンス」アイコンを追加するページにドロップします(図34-9)。

図34-9 コンポーネント・パレット - IMPサービスのコンポーネント

「図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セキュリティの構成の詳細は、第68.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追加フィールド

「図34-11 Account追加フィールド」の説明

8. 外部アプリケーション・サービスでは、様々な資格証明を接続に関連付けることができます。

- 共有資格証明が指定されていると、認証済の各ユーザーは、外部アプリケーションへのアクセスに同じ資格証明(つまり、ここに定義できるユーザー名とパスワード)を使用するようになります。すべてのログイン済ユーザーに対して、1つのプレゼンス・セッションが作成されます。パブリック・ユーザーは、これにアクセスできません。

- パブリック資格証明の場合、Frameworkアプリケーションを認証することなく、すべての認証されていない(パブリックの)ユーザーに対する特定のプレゼンスIDからのプレゼンスを表示できます。アプリケーションがセキュアでない場合や、ユーザーがログインしていない場合は、パブリック資格証明が使用されます。すべてのパブリック・ユーザーに対して1つのプレゼンス・セッションが作成されます。

- プライベート資格証明の場合、各ユーザーは個人のIDで認証する必要があります(つまり、各アプリケーション・ユーザーは、自分の資格証明を指定する必要があるということです)。ユーザーごとに、1つのプレゼンス・セッションが作成されます。

9. 外部アプリケーションにプライベート資格証明を使用させる場合は「終了」をクリックし、共有またはパブリック資格証明を設定する場合は「次へ」をクリックします。

10. 共有資格証明のみの場合: 「共有資格証明」ページで、「共有資格証明の指定」が選択されていることを確認して、共有ユーザー資格証明とIDを入力します。

11. パブリック資格証明のみの場合: 「パブリック資格証明」ページで、「パブリック資格証明の指定」が選択されていることを確認して、パブリックで使用するためのユーザー資格証明とIDを入力します。

12. 「終了」をクリックして、外部アプリケーションを登録します。

13. IMP接続ウィザードで、IMP用に新しく作成した外部アプリケーション接続が選択されていることを確認します。

外部アプリケーションの使用の詳細は、第68.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-12 Yahoo!メッセンジャーの資格証明を入力するためのユーザー・インタフェース」の説明

そのユーザーのプレゼンス・タグが、オンライン(図34-13)またはオフライン(図34-14)のいずれかのYahooプレゼンスを示します。

図34-13 Yahooの「プレゼンス」アイコン(オンライン)

「図34-13 Yahooの「プレゼンス」アイコン(オンライン)」の説明

図34-14 Yahooの「プレゼンス」アイコン(オフライン)

「図34-14 Yahooの「プレゼンス」アイコン(オフライン)」の説明

図34-15に、ディスカッション・フォーラム・タスク・フローが組み込まれたサンプル・ページを示します。このページには、Yahoo!メッセンジャーのプレゼンスとWebCenter Portalのプレゼンスが一緒に表示されています。

図34-15 WebCenter PortalのプレゼンスとYahoo!メッセンジャーのプレゼンスを含むサンプル・ページ

「図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

アプリケーションをパッケージ化して、これをカスタム共有ライブラリ(たとえば、WebCenter Portal: Spacesのライブラリ)としてデプロイする方法の詳細は、第55章「JDeveloperを使用したSpacesアプリケーションの拡張」を参照してください。

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サービスはプレゼンス・サーバーからプレゼンス情報をフェッチして、その情報をプレゼンス・キャッシュに格納します。プレゼンスのリクエストに対して、このサービスは、キャッシュの有効期限が切れるまでキャッシュのデータを返します。デフォルトのキャッシュ有効期間は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 メール・サービスの統合

この章では、設計時にWebCenter Portal: Frameworkアプリケーションにメール・サービスを統合する方法について説明します。

メールの管理および組込みの詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のメール・サービスの管理に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のメール・サービスの使用に関する項

この章には次の項が含まれます:

- 第35.1項「メール・サービスの概要」

- 第35.2項「メール・サービスの基本構成」

- 第35.3項「メール・サービスの詳細情報」

注意:

メール・サービスのサポート対象は受信ボックスのみです。その他のフォルダやメッセージの移動はサポートしていません。

35.1 メール・サービスの概要

この項では、メール・サービスの機能と要件の概要を説明します。次のサブセクションが含まれます:

- 第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-1 実行時のメール・サービス」の説明

ドロップダウン・リストは、ビューを今日受信したメッセージ、昨日から受信したメッセージ、今週受信したメッセージおよび今月受信したメッセージに切り替えるフィルタを提供します(図35-2)。

図35-2 メッセージ・フィルタ

「図35-2 メッセージ・フィルタ」の説明

注意:

デフォルトでは、「すべて」で最新50件のメッセージが表示されます。この数を増やす方法の詳細は、第35.3.2項「表示するメール数の構成」を参照してください。

ドロップダウン・リストの横にある「作成」アイコンをクリックすると、すぐにアプリケーションから新しいメッセージを作成できます。図35-3に示されるとおり、このアイコンをクリックすると「作成」ページが表示されます。

図35-3 メールの作成

「図35-3 メールの作成」の説明

「検索」アイコンを使用すると、Frameworkアプリケーションが使用するLDAPストア内の、ユーザーのメール・アドレスや連絡先を検索できます。LDAPストア以外のユーザーについては、明示的なメール・アドレスを入力する必要があります。

実行時のメール・サービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

35.1.2 メール・サービスの要件

メール・サービスには、IMAP4プロトコルとSMTPプロトコルをサポートするメール・サーバーが必要です。

WebCenter Portal: Spacesでは、スペースの作成時に配信リストを自動作成するために、Microsoft Exchangeメール・サーバーが必要になります。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は、Frameworkアプリケーション内でメール・サービスを動作させるために必要な前提条件とタスクの概要を示しています。

図35-4 Frameworkアプリケーションに対するメール・サービスの構成

「図35-4 Frameworkアプリケーションに対するメール・サービスの構成」の説明

表35-1 Frameworkアプリケーションに対するメール・サービスの構成

アクター

タスク

サブタスク

管理者

1. WebCenter Portalおよびメール・サービス用のバックエンド・コンポーネントをインストールします

1.a Microsoft Exchange 2007および2010の場合のみ、追加の構成手順を実行します

開発者

2. Frameworkアプリケーションにメール・サービスを統合します

2.a JDeveloperでメール・サーバーへの接続を構成して、そのメール・サーバーを外部アプリケーションと関連付けます

2.b JDeveloperでページにメール・タスク・フローを追加します

開発者または管理者

3. 次のいずれかのツールを使用して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

「図35-5 「新規メール接続の構成」、手順1」の説明

複数のメール・アカウントを構成する場合、これをデフォルトの接続として選択する必要はありません。ただし、サービスでは、1つの接続をデフォルトの接続として指定する必要があることに注意してください。

注意:

接続をデフォルトの接続として作成すると、それがデフォルトでないように編集することはできません。別のデフォルト接続を使用するには、新しい接続を作成し、それをデフォルト接続としてマークする必要があります。

6. 「一般」ページでは、パラメータの値を入力します(図35-6)。

図35-6 「新規メール接続の構成」、手順2

「図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: SpacesアプリケーションでMicrosoft Exchangeと同じActive Directoryサーバーを使用する必要があります。

- Connection Timeout: 接続のタイムアウト(秒単位)。

7. 「接続のテスト」をクリックして、ホストとポートが使用可能なことを確認します。

8. 先に進むには、既存の外部アプリケーションを選択するか、新しい外部アプリケーションを作成する必要があります。

1. 外部アプリケーションの場合は、「+」アイコンをクリックして外部アプリケーションの登録ウィザードを開きます
このアプリケーションは、メール・サーバーのユーザーをアプリケーション・ユーザーにマップするため、エンド・ユーザーはユーザー名とパスワードを毎回入力する必要がなくなります。

外部アプリケーションの詳細は、第68.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」の追加フィールド

「図35-7 「Email Address」と「Reply-To Additional」の追加フィールド」の説明

注意:

メール・サービスの外部アプリケーションには「電子メール・アドレス」フィールドが必要で、それをユーザーに表示する必要があります。「表示名」および返信先アドレスのフィールドはメールの送信時にも利用されます。

7. 外部アプリケーション・サービスでは、様々な資格証明を接続に関連付けることができます。
共有資格証明が指定されていると、認証済の各ユーザーは、外部アプリケーションへのアクセスに同じ資格証明(つまり、ここに定義したユーザー名とパスワード)を使用するようになります。

パブリック資格証明の場合、Frameworkアプリケーションを認証することなく、認証されていない(パブリックの)ユーザーすべてに対する特定のメールIDからのメールを表示できます。アプリケーションがセキュアでない場合や、ユーザーがログインしていない場合は、パブリック資格証明が使用されます。

注意:

パブリック資格証明は、自己登録ページからのメール送信に必要です。

プライベート資格証明の場合、各ユーザーは個人のメールIDで認証する必要があります。つまり、各アプリケーション・ユーザーは、自分の資格証明を指定する必要があるということです。

8. 外部アプリケーションにプライベート資格証明を使用させる場合は「終了」をクリックし、共有またはパブリック資格証明を設定する場合は「次へ」をクリックします。

9. 共有資格証明のみの場合: 「共有資格証明」ページで、「共有資格証明の指定」が選択されていることを確認して、共有ユーザー資格証明とメールIDを入力します。

10. パブリック資格証明のみの場合: 「パブリック資格証明」ページで、「パブリック資格証明の指定」が選択されていることを確認して、パブリックで使用するユーザー資格証明とメールIDを入力します。

11. 「終了」をクリックして、外部アプリケーションを登録します。

9. メール接続ウィザードに戻り、メール用に新しく作成した外部アプリケーション接続が選択されていることを確認します。

10. 必要に応じて、Active Directoryサーバー用のLDAPパラメータ値を追加すると、(WebCenter Portal: Spacesの)スペース配信リストを管理できます。
パラメータの詳細は、表35-2を参照してください。

注意:

WebCenter Portal: Spacesとメール・サービスが、アイデンティティ管理システムを共有して、スペースのメーリング・リストを設定する場合は、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ドメイン

配信リスト名に追加するドメインを入力します。

WebCenter Portal: Spacesの場合は、たとえば、ドメイン値に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. 第3章「開発環境の準備」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。

2. メール・サーバーに接続するようにアプリケーションが構成されていることを確認します。

3. プライベート資格証明または共有資格証明用の外部アプリケーションが構成してある場合は、ADFセキュリティを使用して、Frameworkアプリケーションをセキュアにする必要があります。WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第68.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 「ページ・データ・バインディング定義」

「図35-8 「ページ・データ・バインディング定義」」の説明

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図35-9)で、必要に応じてバインディング・パラメータ値を変更します。

図35-9 メール・タスク・フローの「タスク・フロー・バインディングの編集」ダイアログ

「図35-9 メール・タスク・フローの「タスク・フロー・バインディングの編集」ダイアログ」の説明

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

表35-3に、メール・サービス・タスク・フローに固有のプロパティを示します。

表35-3 メール・サービス・タスク・フロー・パラメータ

プロパティ

説明

タスク・フロー

tabularView

EL値タイプを使用して、trueの値を入力すると、件名、送信元、送信日付など、メール・メッセージに関連付けられた情報が表形式で表示されます。このパラメータをfalseに設定すると、メール・メッセージはリスト・ビューでレンダリングされます。

メール

図35-10は、リージョン・パラメータtabularViewがtrueに設定されている、メール・タスク・フローを示しています。

図35-10 リージョン・パラメータの表形式がTrueに設定されているメール・タスク・フロー

「図35-10 リージョン・パラメータの表形式がTrueに設定されているメール・タスク・フロー」の説明

35.2.4 メール・サービスのセキュリティの設定

メール・サービスには、各ログイン済ユーザーのメールをフェッチするためのセキュリティが必要になります。WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第68.3項「ADFセキュリティの構成」を参照してください。

アプリケーションへのログインに使用するユーザー名に対応する外部アプリケーション資格証明がフェッチされ、メール・サーバーへのログインに使用されます。お薦めする方法は、メール・サーバーとFrameworkアプリケーションが同じアイデンティティ・ストアを指すようにすることです。

注意:

Frameworkアプリケーションとメール・サービスが同じアイデンティティ・ストアを共有している場合でも、メール・サービスはアイデンティティの伝播をサポートしません。シングル・サインオン機能は、外部アプリケーションのメカニズムを通じて有効になります。

メール・サービスは、外部アプリケーション接続がパブリック資格証明で構成されている場合にのみ、保護されていないFrameworkアプリケーションでも動作します。セキュリティを適用していないときに、コンテンツにアクセスするためにメールのログインが必要になると、ユーザーは認証できず、実行時にコンテンツが表示されなくなります。

外部アプリケーションの使用の詳細は、第68.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を使用して、この値を増やせます。詳細は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』を参照してください。

この変更はすべてのユーザーに適用されます。つまり、次の例35-4では、すべてのユーザーのFrameworkアプリケーションの受信トレイに500件の最近のメールが存在します。それに応じて表示するメッセージ数を増やすと、Frameworkアプリケーションのキャッシュ・サイズが増加します。これは慎重に妥当なサイズに設定してください。

35.3.3 メール・サービスのトラブルシューティング

この項では、メール・サービスで発生する一般的な問題と解決方法について説明します。

問題

Frameworkアプリケーションからメール・メッセージの取得、またはメール・メッセージの送信ができません。

解決方法

次の点を確認してください。

- アプリケーション内に、メール・サービス接続が存在する。

- 必要なメール・サービス接続が、デフォルトの接続として指定されている。

- 接続で構成されているメール・サーバーが実行中である。別のメール・クライアントから接続してみて、接続の詳細に間違いがないことを確認してください。

問題

Frameworkアプリケーションのメール・サービスではユーザーがログインする必要がありますが、実行時にユーザーが認証されず、一切のコンテンツが表示されません。ユーザーがメール・サービスにアクセスすると、外部アプリケーション認証の例外がスローされます。

解決方法

メール・サービスは、メール接続がパブリック資格証明による外部アプリケーション接続を使用するよう構成されている場合にのみ、保護されていないFrameworkアプリケーションでも動作します。アプリケーションを非保護モードで実行する場合は、外部アプリケーション用のパブリック資格証明が構成されていることを確認してください。

Frameworkアプリケーションを保護モードで実行する場合は、アプリケーション用にADFセキュリティを構成する必要があります。

問題

ユーザーがFrameworkアプリケーションでメールを受信すると、メッセージのコンテンツは、メッセージ本文内ではなく、添付ファイル(content.htmlというファイル)として表示されます。これは、メール・サーバーがMicrosoft Exchange Server 2007を実行していて、"Microsoft Exchange Server 2007の更新プログラムのロールアップ3"がインストールされていない場合に発生することがあります。

解決方法

メール・サーバー管理者は、この問題を修正する「Microsoft Exchange Server 2007の更新プログラムのロールアップ3」をダウンロードしてインストールする必要があります。詳細は、http://support.microsoft.com/kb/930468を参照してください。

36 投票サービスの統合

この章では、設計時にWebCenter Portal: Frameworkアプリケーションに投票サービスを統合する方法について説明します。投票の使用方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の投票サービスの使用に関する項を参照してください。

この章には次の項が含まれます:

- 第36.1項「投票の概要」

- 第36.2項「投票サービスの基本構成」

- 第36.3項「投票サービスの詳細情報」

36.1 投票の概要

投票サービスによって、アプリケーション・ページ上のオンライン投票を作成、編集および実施できます。投票によって、関係者にアンケート(意見や経験レベルなど)を実施したり、重要な情報を覚えているかどうかを確認したり、プレゼンテーションの効果についてのフィードバックを集めたりできます。

この項には次のサブセクションが含まれます:

- 第36.1.1項「投票サービスの理解」

- 第36.1.2項「投票の要件」

- 第36.1.3項「実行時の処理」

36.1.1 投票サービスの理解

投票サービスでは、実行可能な投票の実施に加えて、次のことを実行できます。

- 投票をすばやく作成し、公開します。

- 既存の投票をカスタマイズします。たとえば、質問を追加または変更したり、投票の公開(オープン)および終了を行います。

- 特定の投票または最後に公開した投票を実施します

- 投票結果を表示します

- すべての投票のステータスおよび各投票に対して使用可能なアクション(結果の編集、削除、公開、分析、クリアなど)を表示します。

投票サービスは、投票マネージャでインスタント・メッセージおよびプレゼンス・サービスと統合されています。

36.1.2 投票の要件

Frameworkアプリケーションでは、投票サービスには、WebCenter Portalデータベース・スキーマへの接続が必要です。データベース接続の設定の詳細は、第7.2.2項「データベース接続の設定」を参照してください。

36.1.3 実行時の処理

実行時には、ユーザーは名前と質問のみですばやく投票を作成できます。図36-1に、クイック投票の例を示します。

図36-1 クイック投票

「図36-1 クイック投票」の説明

WebCenter Portalアプリケーション管理者は、投票マネージャにアクセスし、そこで、複数の質問またはテンプレートを使用して投票を作成できます。「アクション」ドロップダウン・リストで、投票の設計の続行、投票の公開、結果の分析、結果のクリアおよび投票の削除が可能です(図36-2)。

図36-2 投票マネージャ

「図36-2 投票マネージャ」の説明

投票マネージャを使用して作成した投票を実施するには、それを公開して開く必要があります。未公開または閉じている投票の実施はできません。

実行時のサービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

36.2 投票サービスの基本構成

この項では、アプリケーションにこのサービスを追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第36.2.1項「投票サービスの接続の設定」

- 第36.2.2項「投票サービスの設計時の追加」

- 第36.2.3項「投票のセキュリティの設定」

36.2.1 投票サービスの接続の設定

投票サービスには、WebCenter Portalスキーマがインストールされているデータベースへの接続が必要です。データベース接続の設定の詳細は、第7.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 ページ・データ・バインディング定義

「図36-3 ページ・データ・バインディング定義」の説明

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図36-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セキュリティの構成の詳細は、第68.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つのデータ・コントロールがあります。

- 投票の実施データ・コントロール

- 投票マネージャ・データ・コントロール

関連項目:

データ・コントロールの使用方法の詳細は、第7.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部

ピープル・コネクション・サービスの使用

この部では、ピープル・コネクション・サービスについて、それによって提供されるものおよびWebCenterポータル・アプリケーションにおける使用方法を含む、包括的な情報を提供します。

この部の内容は、次のとおりです。

- 第37章「ピープル・コネクション・サービスの概要」

- 第38章「ピープル・コネクション・サービスの基本構成」

- 第39章「ピープル・コネクション・タスク・フロー・パラメータ」

- 第40章「ピープル・コネクション・データ・コントロールおよびJava APIの使用方法」

- 第41章「ピープル・コネクション・サービスREST API」

37 ピープル・コネクション・サービスの概要

ピープル・コネクション・サービスは、プロジェクト・チーム内および企業全体にわたるコネクションおよびコミュニケーションの向上に使用するソーシャル・ネットワーキング・ツールを提供します。これは、次のものを含む一連の機能により実現されます。

- アクティビティ・ストリーム: アプリケーションまたはソーシャル・ネットワーキング・アクションによって生成されるユーザー・アクティビティを表示します。

- コネクション: 情報の共有、パフォーマンスへのコメント、メッセージの交換、およびアクティビティの追跡を行うために他のアプリケーション・ユーザーとのつながりを作ります

- フィードバック: 他のユーザーに非定型なパフォーマンス・フィードバックを送ります

- メッセージ・ボード: 他のユーザーにメッセージを投稿します

- プロファイル: 個人の連絡先情報を入力し、他のユーザーの連絡先情報を表示します

- パブリッシャ: ステータス・メッセージを公開し、ファイルおよびリンクを投稿します

この章では、ピープル・コネクション・サービスに関連するタスク・フローについて説明し、いくつかのトラブルシューティングのヒントを提供します。

この章には次の項が含まれます:

- 第37.1項「ピープル・コネクション・サービスの概要」

- 第37.2項「ピープル・コネクション・サービスのトラブルシューティング」

37.1 ピープル・コネクション・サービスの概要

ピープル・コネクション・サービスは、ユーザーのコネクションを作成し、そのコネクションと対話し、そのコネクションのアクティビティを追跡するためのソーシャル・ネットワーキング・ツールを提供します。その機能によって、ユーザーは、自身の個人プロファイルの管理、他のユーザーのプロファイルへのアクセス、非定型のフィードバックの提供、メッセージの投稿、アクティビティの追跡、および他のユーザーとつながりを持つことができます。

本番環境では、企業は、可能性のあるコネクションの移入をピープル・コネクションに提供する手段としてそのバックエンド・アイデンティティ・ストアを利用できます。開発環境では、開発者はテストユーザーをjazn-data.xmlファイルに追加できます。

関連項目:

アプリケーションの本番バージョン向けのバックエンド(LDAP)アイデンティティ・ストアへの接続の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のセキュリティの管理に関する項の章を参照してください。jazn-data.xmlでのテスト・ユーザーの作成の詳細は、第23.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: Spaceユーザーズ・ガイドの第VIII部 共同のソーシャル・ネットワーキング環境の編成に関する項を参照してください。

ピープル・コネクション・タスク・フローの詳細は、第37.1.1項「ピープル・コネクション・サービス・タスク・フロー」を参照してください。

37.1.1.1 アクティビティ・ストリーム

アクティビティ・ストリーム機能は、ユーザーのコネクションのアプリケーション・アクティビティを追跡します。表37-1は、アクティビティ・ストリームによって追跡できるアクティビティのタイプを示しています。

表37-1 アクティビティ・ストリームによって追跡されるアクティビティ

サービス

追跡されるアクティビティ

お知らせ

- お知らせの作成

- お知らせの編集

ブログ

- ブログの作成

- ブログの更新

コネクション

- コネクションの招待

- コネクションを持っている人々

ディスカッション

- フォーラムの作成

- トピックの作成

- トピックへの返信

ドキュメント

- ドキュメントの作成

- ドキュメントの編集

- タグの追加

- タグの削除

イベント

- イベントの作成

- イベントの編集

フィードバック

- 残したフィードバック

- 受信したフィードバック

リスト

- リストの作成

- リストへの行の追加

- リスト行の編集

メッセージ・ボード

- 残したメッセージ

- 受信したメッセージ

ページ

次のアクティビティが、サービス・フレームワークの範囲内で実行された場合、それらが追跡されます(たとえば、ユーザーが/myapp/mypages/の下にページを作成した場合、そのページ操作は追跡されません)。

- ページの作成

- ページの編集

- ページの削除

- タグの追加

プロファイル

- 更新された写真

- 更新されたプロファイル

- 更新された個人ステータス・ノート

タグ付け

- タグの追加

- タグの削除

アクティビティ・ストリームは、同様にアプリケーション・アクティビティを追跡およびレポートする最近のアクティビティ・サービスと、いくらか類似しています(詳細は、第49章「最近のアクティビティ・サービスの統合」を参照してください)。両方により統合サービスのアプリケーション・アクティビティを追跡しますが、アクティビティ・ストリームにより幅の広いサービスが追跡されます。たとえば、最近のアクティビティは、ドキュメント(Wikiやブログなど)、お知らせ、ディスカッションおよびページ・サービスを追跡します。アクティビティ・ストリームは、これらのサービスとピープル・コネクションを追跡します。アクションを実行した人に関係なく、最近のアクティビティによりアクティビティが追跡されます。ユーザーの接続により実行されるアクティビティがアクティビティ・ストリームにより追跡され、アクティビティ実行者に関する情報が含まれます。最近のアクティビティには名前が含まれません。

これらの2つのサービスにおける基本的な相違点は、アプリケーションにおける処理内容の概要を最近のアクティビティにより提供することにまとめることができます。アクティビティ・ストリームにより、ユーザーの接続で実行した処理の概要を提供します。

パブリッシャ・タスク・フローは、アクティビティ・ストリームと連携して機能し、ユーザー・メッセージの形式でコンテンツを提供します。パブリッシャ・タスク・フローを介して投稿されたメッセージは、それを入力したユーザーおよびそのユーザーのコネクションのアクティビティ・ストリームに公開されます。

アクティビティ・ストリーム・メッセージには、ファイルやリンクなどが添付されている場合があります。ファイルのMIMEタイプに応じて、アクティビティ・ストリームで、そのような添付のプレビューを表示できます。アクティビティ・ストリームでは、ネイティブのWeb形式またはUCMのスライド・レンダリングを使用してファイルをプレビューします。使用されるプレビューアは、プレビューするファイルのMIMEタイプに応じて異なります。

ネイティブなWeb形式を使用するMIMEタイプには、次のものがあります。

- image

- htm

- text

UCMのスライド・レンダリングを使用するMIMEタイプには、次のものがあります。

- pdf

- powerpoint

- powerpnt

- pptx

注意:

PDFファイル・プレビューは、MIMEタイプがpdfであり、UCM接続にwebContextRootが指定されており、かつWebCenter Portal: SpacesアプリケーションにOracle HTTP Serverを介してアクセスしている場合に、アクティビティ・ストリームで使用できます。

プレビューされるMIMEタイプは、これらの箇条書きに示すMIMEタイプのみです。その他のMIMEタイプはリンクとして表示されます。MIMEタイプdocxおよびxlsxは、アクティビティ・ストリームでプレビューされません。アクティビティ・ストリーム・タスク・フロー・インスタンスと関連付けられたパラメータを設定すると、ファイルのプレビューを省略できます(詳細は、第39.2項「ピープル・コネクション・タスク・フロー・バインディング・パラメータ」を参照してください)。

リソース・パレットから、次の2つのアクティビティ・ストリーム・タスク・フローを使用できます。

- アクティビティ・ストリーム - それぞれのコネクションの最近のアクティビティのメイン・ビューをユーザーに提供します(図37-1)。

図37-1 アクティビティ・ストリーム・タスク・フロー

「図37-1 アクティビティ・ストリーム・タスク・フロー」の説明

- アクティビティ・ストリーム - クイック・ビュー - ユーザーのコネクションの最近のアクティビティのみが表示される、ストリームされたアクティビティの切捨て済のビューをユーザーに提供します。すべてのアクティビティを表示するには、「詳細」リンクをクリックし、タスク・フローのメイン・ビュー(アクティビティ・ストリーム)にナビゲートします(図37-2)。

図37-2 アクティビティ・ストリーム - クイック・ビュー・タスク・フロー

「図37-2 アクティビティ・ストリーム - クイック・ビュー・タスク・フロー」の説明

関連項目:

実行時のアクティビティ・ストリーム・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のアクティビティ・ストリーム・タスク・フローの使用に関する項を参照してください。

37.1.1.2 コネクション

コネクションは、ユーザーに、自身のコネクションを管理し、他のユーザーのコネクションを表示する手段を提供します。コネクションを使用して、ビジネス上の友人を集め、1つ以上の小さいソーシャル・グループに連絡を取ります。コネクション・リストを使用して、コネクションの表示を管理します。

リソース・パレットから、次の3つのコネクション・タスク・フローを使用できます。

- コネクション - それぞれのコネクションの表示と管理、コネクション・リストの作成、接続するための招待の送信と応答を実行する手段をユーザーに提供します(図37-3)。

図37-3 コネクション・タスク・フロー

「37-3 コネクション・タスク・フロー」の説明

- コネクション - カード: 次のビューから選択できます。

- vcard: コネクションの写真、役職およびステータス・メッセージを表示します。

- iconic: コネクションの写真およびユーザー名を表示します。

- list: リストにコネクションを表示します。リストの各行には、プロファイル写真、ユーザー名、役職および「リストに追加」ボタンが表示されます。

- tiled: コネクションの個人プロファイル写真をレンダリングし、その写真に加えてユーザー名および役職を表示します。

ヒント:

すべてのビューにおいて、名前はユーザーのプロファイルのサマリー・ビューにリンクしています。

タスク・フロー・バインディングを通じてこれらのビューのいずれかを選択します(詳細は、第39章「ピープル・コネクション・タスク・フロー・パラメータ」を参照してください)(図37-4)。

図37-4 コネクション - カード・タスク・フロー

「図37-4 コネクション - カード・タスク・フロー」の説明

- コネクション - クイック・ビュー - それぞれのコネクションのアップロードされたプロファイル写真のビューとそれぞれのプロファイルのサマリー・ビューへのリンクをユーザーに提供します(図37-5)。

図37-5 コネクション - クイック・ビュー・タスク・フロー

「図37-5 コネクション - クイック・ビュー・タスク・フロー」の説明

関連項目:

実行時のコネクション・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のソーシャル・ネットワークの設定に関する項を参照してください。

37.1.1.3 フィードバック

フィードバックは、ユーザーに、フィードバックを表示、投稿、および管理する手段を提供します。デフォルトでは、ユーザーは、独自のフィードバック・ビューでフィードバックを表示できます。ユーザーは、他のユーザーのフィードバック・ビューでフィードバックを表示および投稿できます。

リソース・パレットから、次の2つのフィードバック・タスク・フローを使用できます。

- フィードバック - ユーザーに、フィードバック・タスク・フローのメイン・ビューを提供します。メイン・ビューには、送信および受信したフィードバックを表示、投稿、ソート、およびフィルタリングするためのコントロールと、受信したフィードバックを非表示にするためのコントロールが含まれています(図37-6)。

図37-6 フィードバック・タスク・フロー

「図37-6 フィードバック・タスク・フロー」の説明

- フィードバック - クイック・ビュー - 最新の投稿のみが表示されている、フィードバック・タスク・フローの切捨て済ビューを、ユーザーに提供します。初期のビューに表示できる数を超える投稿がある場合、ユーザーは「詳細」リンクをクリックして、フィードバック・タスク・フローのメイン・ビューにナビゲートできます。ユーザーAがユーザーBのフィードバック - クイック・ビューのビューにアクセスすると、ユーザーAには、さらに「フィードバックの追加」オプションが表示されます(図37-7)。

図37-7 フィードバック - クイック・ビュー・タスク・フロー

「図37-7 フィードバック - クイック・ビュー・タスク・フロー」の説明

関連項目:

実行時のフィードバック・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のフィードバック・タスク・フローの使用に関する項を参照してください。

37.1.1.4 メッセージ・ボード

メッセージ・ボードは、メッセージ・ボードおよびアクティビティ・ストリームへのメッセージおよび添付を表示および投稿する手段を提供します。

リソース・パレットから、次の2つのメッセージ・ボード・タスク・フローを使用できます。

- メッセージ・ボード - メッセージ・ボードは、メッセージ・ボードのメッセージのメイン・ビューと、メッセージのビューを追加、表示、更新、非表示、削除および管理する手段やメッセージをプライベートとしてマークしたりプライベート・メッセージを共有したりする手段をユーザーに提供します(図37-8)。

図37-8 メッセージ・ボード・タスク・フロー

「図37-8 メッセージ・ボード・タスク・フロー」の説明

- メッセージ・ボード - クイック・ビュー - ユーザーに、メッセージ・ボード・メッセージの切捨て済ビューを提供し、メッセージの追加、表示、更新、非表示および削除を行う手段と、メッセージをプライベートとしてマークしたり、プライベート・メッセージを共有する手段を提供します。ユーザーは、「詳細」リンクをクリックすることで、詳細ビューにナビゲートできます(図37-9)。

図37-9 メッセージ・ボード - クイック・ビュー・タスク・フロー

「図37-9 メッセージ・ボード - クイック・ビュー・タスク・フロー」の説明

関連項目:

実行時のメッセージ・ボード・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のメッセージ・ボード・タスク・フローの使用に関する項を参照してください。

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 プロファイル・ギャラリ・タスク・フロー

「図37-12 プロファイル・ギャラリ・タスク・フロー」の説明

関連項目:

実行時のプロファイル・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の個人プロファイルの表示と編集に関する項を参照してください。

37.1.1.6 パブリッシャ・タスク・フロー

パブリッシャ・タスク・フローは、アクティビティ・ストリームと連携して機能します。ユーザーは、パブリッシャにコンテンツを入力し、そのコンテンツを投稿したユーザーのアクティビティ・ストリームと、そのユーザーのコネクションのアクティビティ・ストリームにコンテンツが公開されます(図37-13)。

図37-13 パブリッシャ・タスク・フロー

「図37-13 パブリッシャ・タスク・フロー」の説明

関連項目:

実行時のパブリッシャ・タスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のパブリッシャ・タスク・フローを使用したアイテム、ファイルおよびURLの共有に関する項を参照してください。

37.1.2 ピープル・コネクション・サービスの要件

ピープル・コネクションをご使用のWebCenter Portal: Frameworkアプリケーションと適切に統合するには、次の手順に従ってください。

1. WebCenter Portal: Frameworkアプリケーションを作成します(詳細は、第5.2項「Frameworkアプリケーションの作成」を参照してください)。

2. WebCenterスキーマを設定し、それへのデータベース接続を作成します(詳細は、第7章「WebCenter Portal Services用アプリケーションの準備」を参照してください)。

3. JSF (.jspx)ページを作成します(詳細は、第5.3項「ポータルへのページの追加」を参照してください)。

4. アプリケーションを保護し、いくつかのテスト・ユーザーを作成します(詳細は、第68章「WebCenter Portal: Frameworkアプリケーションの保護」および第23.2.2章「jazn-data.xmlファイルでのロールおよび付与権限の定義方法」を参照してください)。

5. ピープル・コネクション・タスク・フローをページにドラッグ・アンド・ドロップします(詳細は、第38.2項「ピープル・コネクション・タスク・フローをページに追加する方法」を参照してください)。

6. タスク・フロー・バインディングに必要な値を提供します(詳細は、第39章「ピープル・コネクション・タスク・フロー・パラメータ」を参照してください)。

7. ページを実行します。

8. 必要に応じて、手順4で作成したテスト・ユーザーのユーザー名とパスワードを入力します。

37.2 ピープル・コネクション・サービスのトラブルシューティング

この項では、ピープル・コネクション・サービスの使用中に発生する可能性がある問題のトラブルシューティングに役立つ情報を提供します。

ピープル・コネクション・タスク・フローは、空であってもフル・ブラウザに表示されます

これにより、Internet Explorerバージョン8 (IE8)を使用している場合に問題が発生することがあります。IE8で、「ツール」→「互換表示設定」に移動します。「互換表示設定」ダイアログで、次のチェック・ボックスを選択解除します。

- イントラネット サイトを互換表示で表示する

- すべてのWebサイトを互換表示で表示する

新しいプロファイル・イメージが表示されない

プロファイル・イメージに対する変更は、古いWebCenterデータベース・キャッシュが原因で、ただちにレンダリングされないことがあります。古いイメージの下にある「リフレッシュ」アイコンをクリックすると、イメージが更新されます。

38 ピープル・コネクション・サービスの基本構成

この章では、WebCenter Portal: Frameworkアプリケーションにピープル・コネクション・サービスを追加するために必要な手順について説明します。次の項が含まれます:

- 第38.1項「ピープル・コネクション・サービスのためのデータベース接続を設定する方法」

- 第38.2項「ピープル・コネクション・タスク・フローをページに追加する方法」

- 第38.3項「ピープル・コネクション・サービスのセキュリティの設定」

- 第38.4項「ピープル・コネクション機能のサイトレベルの設定の確立」

38.1 ピープル・コネクション・サービスのためのデータベース接続を設定する方法

Oracle WebCenter Portal: Servicesのサポートによるデータベース接続の設定の詳細は、第7.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アプリケーションで基本的なセキュリティ・ソリューションを実装する方法の詳細は、第68.3項「ADFセキュリティの構成」を参照してください。

- テスト・ユーザーを作成するには、第23.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@domain.comとしてbusiness_emailを追加するには、次のものを追加します。

<user>
<name>monty</name>
<display-name>monty</display-name>
<credentials>{903}EfEepsY6I/TrKthpcmjJIsrlP36Ysr/j</credentials>
<property name="business_email" value="monty@domain.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を参照してください。

表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 ピープル・コネクション・タスク・フロー・パラメータ

各ピープル・コネクション・タスク・フローには、一連の必須およびオプションのタスク・フロー・バインディング・パラメータがあります。これらは、タスク・フローが正常に機能するために役立つ情報を取得する手段を提供します。たとえば、すべてのピープル・コネクション・タスク・フローは、現在のランタイム・ユーザーのIDを取得するためのバインディング・パラメータを提供します。この値(通常は#{securityContext.userName})により、このタスク・フローで、現在のユーザーに関連するピープル・コネクション・データを返すことが可能になります。

タスク・フロー・バインディング・パラメータを使用すると、タスク・フローの正常なレンダリングに必要な値を提供できるのみでなく、タスク・フロー・インスタンスの外観および動作をカスタマイズできます。たとえば、パラメータ値を使用して、ヘッダーとフッターをレンダリングするかどうか、表示する情報の行数や列数、返されたデータにフィルタを適用するかどうかなどを決定できます。

タスク・フロー・バインディング・パラメータの値は、タスク・フローをアプリケーション・ページにドラッグ・アンド・ドロップするときに指定できます。この操作を行うと、「タスク・フロー・バインディング・パラメータ」ダイアログが開きます(詳細は、第38.2項「ピープル・コネクション・タスク・フローをページに追加する方法」を参照してください)。ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を調整することもできます。

この章では、設計時にタスク・フロー・パラメータ値を改訂する方法を説明し、ピープル・コネクション・タスク・フローと関連付けられているバインディング・パラメータとその説明を示す表を記載します。次の項が含まれます:

- 第39.1項「ピープル・コネクション・タスク・フロー・バインディング・パラメータを改訂する方法」

- 第39.2項「ピープル・コネクション・タスク・フロー・バインディング・パラメータ」

- 第39.3項「アクティビティ・ストリームの詳細な問合せオプションに関する必要な知識」

39.1 ピープル・コネクション・タスク・フロー・バインディング・パラメータを改訂する方法

ページにタスク・フローを追加した後、そのバインディング・パラメータ値を改訂することで、インスタンスをカスタマイズできます。この項では、「タスク・フロー・バインディングの編集」ダイアログにアクセスし、バインディング・パラメータ値を変更する方法について説明します。

「タスク・フロー・バインディングの編集」ダイアログにアクセスするには:

1. アプリケーション・ページを開き、そのページの下部にある「バインディング」タブをクリックすることで、ビューをバインディングに設定します。

2. 「実行可能ファイル」の下で、タスク・フロー・バインディング・パラメータを改訂するタスク・フローをダブルクリックし(図39-1)、「タスク・フロー・バインディングの編集」ダイアログを開きます(図39-2)。

ヒント:

「実行可能ファイル」の下のタスク・フロー名は、デザイン・ビューにおける名前とは異なります。たとえば、メッセージ・ボード・タスク・フローはwallと表示され、フィードバック・タスク・フローはkudosと表示されます。

図39-1 アプリケーション・ページのバインディング・ビュー

「図39-1 アプリケーション・ページのバインディング・ビュー」の説明

図39-2 「タスク・フロー・バインディングの編集」ダイアログ

「図39-2 「タスク・フロー・バインディングの編集」ダイアログ」の説明

3. バインディング・パラメータ値を改訂します(詳細は、第39.2項「ピープル・コネクション・タスク・フロー・バインディング・パラメータ」を参照してください)。

4. 「OK」をクリックし、変更を保存してダイアログを終了します。

5. ページを保存して実行し、結果を表示します。

39.2 ピープル・コネクション・タスク・フロー・バインディング・パラメータ

表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.3項「アクティビティ・ストリームの詳細な問合せオプションに関する必要な知識」を参照してください。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています。

connectionListName

コネクション・リストの名前

このパラメータは、コネクション - カード・タスク・フローに関連付けられています。

currentView

デフォルトで表示するビュー

有効な値には、次のものがあります。

- connections - (デフォルト値)コネクションのリスト

- receivedInvitations - 受信したコネクションの招待のリスト

- sentInvitations - 送信したコネクションの招待のリスト

- people - コネクションの招待を送る人々を見つけるための検索フィールド

ユーザーがタスク・フロー・インスタンスにアクセスするときは、ここで指定されたビューが最初に表示されます。people以外のすべての選択肢で、アプリケーションのデフォルト・ビュー(connections)にナビゲートするためのコントロールが提供されます。peopleを選択すると、他のユーザーにコネクションの招待を送信するための検索および選択のコントロールが提供されます。

このパラメータは、コネクション・タスク・フローに関連付けられています。

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を入力します。名前のアルファベット順にコネクションをソートするには、このフィールドを空白のままにします。

このパラメータは、コネクション - カード・タスク・フローに関連付けられています。

displayCount

タスク・フローに表示するアイテム数

たとえば、タスク・フローに最大5つのアイテムを表示できることを指定するには5と入力します。クイック・ビューで、指定された数より多くのアイテムがある場合は、タスク・フローの下部に「詳細」リンクが表示されます。ユーザーが「詳細」をクリックすると、タスク・フローのメイン・ビューが開き、そこですべてのアイテムにアクセスできます。メイン・ビューには、「前へ」および「次へ」リンクが表示されます。ユーザーはこれらをクリックして、エントリのページをめくります。

このパラメータは、次のタスク・フローのコンポーネント・プロパティに表示されます。

- フィードバック

- フィードバック - クイック・ビュー

- メッセージ・ボード

- メッセージ・ボード - クイック・ビュー

displayMessageSize

各フィードバック・メッセージに表示される文字数

指定した値を超えるメッセージは切り捨てられ、省略記号(…)が末尾に追加されます。

このパラメータは、タスク・フロー・フィードバック - クイック・ビューに関連付けられています。

editMode

プロファイル・タスク・フロー・インスタンスに対して編集モードを有効化する手段

編集モードを有効化する場合は、#{true}を入力します。それを無効化する場合は、#{false}を入力します。

このパラメータは、プロファイル・タスク・フローに関連付けられています。

enableContextInfo

現在のコンテキストにおけるオブジェクトに関する詳細情報を表示または省略する手段(ポップアップまたは他のコンテキストに基づく手段)

- #{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を入力するとこれが表示されます。

このパラメータは、アクティビティ・ストリーム・タスク・フローに関連付けられています

hidePublisher

メッセージ入力フィールド、アップロード・ファイルおよびURLコントロール(パブリッシャ)を表示または非表示にする手段

- 指定したタスク・フロー・インスタンスのメッセージ入力フィールドの表示を無効化するには、#{true}を入力します。

- 指定したタスク・フロー・インスタンスのメッセージ入力フィールドの表示を許可するには、#{false}を入力します。

このパラメータは、次のタスク・フローに関連付けられています。

- メッセージ・ボード

- メッセージ・ボード - クイック・ビュー

hideScopePicker

「次と共有」オプションを表示するのか非表示にするのかを指定します

- 「次と共有」オプションを非表示にするには、#{true}にします。

- 「次と共有」オプションを表示するには、#{false}にします。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

hintsTextKey

ヒント・テキストに対してリソース・バンドル・クラスおよびメッセージ・キーを指定します

ヒント・テキストがない場合の事前定義済キーとしてkey[,RBClass]. __EMPTY__の形式を使用します。これがデフォルト値です。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

imageSize

プロファイル写真の表示サイズ

次の値のうち1つを入力してください。

- ORIGINAL

- LARGE

- MEDIUM

- SMALL

このパラメータは、プロファイル - スナップショット・タスク・フローに関連付けられています。

isUpdateStatus

タスク・フロー・インスタンスを現在のユーザーのプロファイル・ステータス・メッセージの更新専用にする手段

タスク・フロー・インスタンスをユーザーのステータス・メッセージの更新専用にするには、#{true}を入力します。現在のユーザーのプロファイル・ステータス・メッセージへのメッセージの公開を省略するには、#{false}を入力します。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

keepOpenAfterPublish

ユーザーが「公開」ボタンをクリックした後に、テキスト・ボックスをアクティブなままにするかどうかを指定します

- メッセージを公開した後にテキスト・ボックスを開いたままにするには、#{true}を入力します。

- メッセージを公開した後にテキスト・ボックスを閉じるには、#{false}を入力します。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

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」を参照してください。

このパラメータは、パブリッシャ・タスク・フローに関連付けられています。

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.3 アクティビティ・ストリームの詳細な問合せオプションに関する必要な知識

Advanced Queryを使用して、アクティビティ・ストリーム・タスク・フローでストリームされるアクティビティに対するフィルタを作成します。ユーザー名、サービス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句には問合せも副問合せもネストできません。

Advanced Queryパラメータは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ページにドラッグ・アンド・ドロップされたデータ・コントロール・オブジェクト

「図40-1 ADF表が選択された.jspxページにドラッグ・アンド・ドロップされたデータ・コントロール・オブジェクト」の説明"

7. 使用可能なJavaメソッドを使用するには、図40-2に示すように、そのメソッドを.jspxページにドラッグし、「作成」メニュー・リストの「メソッド」項目を選択して、それをプロジェクトのデータにバインドし、目的の機能を実現します。

図40-2 Javaメソッドを.jspxページにドラッグ・アンド・ドロップして「作成」メニュー・リストの「メソッド」を選択

「図40-2 Javaメソッドを.jspxページにドラッグ・アンド・ドロップして「作成」メニュー・リストの「メソッド」を選択」の説明

関連項目:

WebCenter Portal: Frameworkアプリケーションでのデータ・コントロールの使用方法の詳細は、第7.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-19 メソッドisConnectionPartOfUnmodifiableListのパラメータ

パラメータ

説明

connecteeGuid

このコネクションが、変更できないコネクション・リストのメンバーであるかどうかを決定するコネクションのGUID

40.1.2.17 removeConnection(String userid, boolean fromListOnly, String listName)

コネクションとしてまたはコネクション・リストから指定したコネクションを削除するためのメソッド。表40-20では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-20 メソッドremoveConnectionのパラメータ

パラメータ

説明

userid

指定したリストから削除するコネクションのユーザー名

fromListsOnly

ユーザーをコネクションとして削除するか、指定したコネクション・リストからのみ削除するのかを示すフラグ(trueまたはfalse)

listName

指定したユーザーを削除するコネクション・リストの名前

40.1.2.18 searchUsers(String filterPattern, int startIndex, int fetchSize)

ユーザーのリレーショナル属性、GUID、プロファイル詳細など、返されるユーザーに関する詳細のコレクションであるオブジェクトUsersを返します。表40-21では、このメソッドと関連付けられているパラメータをリストし、説明しています。表40-22では、このメソッドと関連付けられている属性をリストし、説明しています。

表40-21 メソッドsearchUsersのパラメータ

パラメータ

説明

filterPattern

condoleezzaやnicoleを返すcoなど、返される検索条件に対して使用するフィルタ

startIndex

結果のフェッチの開始点

これはページ区切りに使用されます。たとえば、検索では50件の一致レコードを返すことができるが、1から10件までしか必要ない場合があります。その場合は、startIndexを1に、fetchSizeを10に設定します。

fetchSize

返す結果の数(startIndexを参照)

表40-22 メソッドsearchUsersの属性

属性

説明

relationalAttributes

-

userGuid

ユーザーの一意のGUID

userProfile

ユーザーのプロファイル詳細

40.1.2.19 updateConnectionListsMembership(String member, Collection addListIds, Collection removeListIds)

指定したコネクション・リストにコネクションを追加したり、指定したコネクション・リストからコネクションを削除することによって、指定したコネクションのリストのメンバーシップを更新する手段を提供します。表40-23では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-23 updateConnectionListsMembershipメソッドのパラメータ

パラメータ

説明

member

管理するコネクション・リストのメンバーシップを持つメンバーのユーザー名

addListIds

指定したユーザーを追加するコネクション・リストの名前

removeListIds

指定したユーザーを削除するコネクション・リストの名前

40.1.3 プロファイル・データ・コントロールの使用

プロファイル・データ・コントロールは、プロファイル詳細を返したり、更新したりするためのメソッドを提供します。

この項に含まれる各項では、プロファイル・データ・コントロールと関連付けられているメソッドをリストし、説明します。

40.1.3.1 メソッド: getProfile(String userId)

ユーザー・プロファイル詳細のコレクションであるWCUserProfileオブジェクトを返すためのメソッド。表40-24では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-24 getProfileメソッドのパラメータ

パラメータ

説明

userID

プロファイル詳細を返すユーザーのID

ヒント:

WCUserProfileオブジェクトと関連付けられた属性を表示するには、アプリケーション・ナビゲータの「データ・コントロール」パネルで「getProfile」メソッドの下の「WCUserProfile」ノードを開きます。

40.1.3.2 メソッド: getProfileForUpdate(String userId)

ユーザー・プロファイル詳細のコレクションであるWCUserProfileオブジェクトを更新するためのメソッド。表40-25では、このメソッドと関連付けられているパラメータをリストし、説明しています。

表40-25 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リファレンスを参照してください

41 ピープル・コネクション・サービスREST API

Oracle WebCenter Portalでは、ピープル・コネクション・サービスをサポートするREST APIが提供されています。ピープル・コネクション・サービスREST APIを使用して、次のアクションを実行できます。

- アクティビティ・ストリーム内の自身のコネクションのアクティビティのストリームの表示

- プロファイルまたはコネクション・リストの参照

- プロファイル・ステータス・メッセージの更新

- コネクション・リストの作成および削除

- コネクション・リストでのメンバーの追加および削除

- メッセージの作成、読取りおよび削除

- フィードバックの読取りおよび削除

この章では、ピープル・コネクション・サービスに関連するREST APIについて説明します。次の項が含まれます:

- 第41.1項「アクティビティ・ストリームREST API」

- 第41.2項「コネクションおよびプロファイルREST API」

- 第41.3項「フィードバックREST API」

- 第41.4項「メッセージ・ボードREST API」

- 第41.5項「招待の作成」

関連項目:

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

41.1 アクティビティ・ストリームREST API

アクティビティ・ストリームREST APIを使用して、アクティビティ・ストリームにおけるユーザーのアプリケーション・アクティビティを参照します。この項では、このアクションを実行するために使用するREST APIの情報を提供します。次のサブセクションが含まれます:

- 第41.1.1項「アクティビティ・ストリーム・エントリ・ポイント」

- 第41.1.2項「アクティビティ・ストリーム・リソース・タイプの分類」

- 第41.1.3項「アクティビティ・ストリームのセキュリティに関する考慮事項」

- 第41.1.4項「アクティビティ・ストリーム・リソース・タイプ」

注意:

REST APIは、多様な方法で構成できるので、ユーザーのアクティビティの一部を返さずに、RESTクライアントでWebcenter Portalアプリケーションとは別にアクティビティ・ストリームがどのように動作するのかをカスタマイズできるようにすることが可能です。

41.1.1 アクティビティ・ストリーム・エントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。ピープル・コネクション・サービスでは、各機能に独自のリンク要素があります。たとえば、ピープル・コネクション・サービスのアクティビティ・ストリーム機能のエントリ・ポイントを見つけるには、次のresourceTypeを持つリンク要素を見つけます。

urn:oracle:webcenter:activities:stream

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供され、それによってアクティビティ・ストリームから現在のユーザーのアプリケーション・アクティビティが取得されます。クライアントは、このエントリ・ポイントにHTTPリクエストを送信し、ピープル・コネクション・サービスのアクティビティ・ストリーム機能を使用します。

関連項目:

リソース索引の詳細は、第53.5.1項「リソース索引」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

41.1.2 アクティビティ・ストリーム・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第41.1.4項「アクティビティ・ストリーム・リソース・タイプ」の該当の項を参照してください。

ピープル・コネクション・サービスのアクティビティ・ストリーム機能のリソース・タイプの分類は、次のとおりです。

urn:oracle:webcenter:activities:stream
urn:oracle:webcenter:activities:activity

41.1.3 アクティビティ・ストリームのセキュリティに関する考慮事項

ピープル・コネクションREST APIのいずれかにアクセスするには、RESTサービスにログインする必要があります。その後、基礎となるサービスにより、権限の確認などが処理されます。

関連項目:

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

41.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パラメータが事前に設定されます。

表41-1に、リンクのrel要素に応じて返されるアクティビティを示します。

表41-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.3項「アクティビティ・ストリームの詳細な問合せオプションに関する必要な知識」も参照してください。

たとえば、次のURIでは、現在のユーザーのアクティビティ・ストリームから、そのユーザーがサービス・フィルタに対する個人プリファレンス設定で構成したサービスすべてに対して、アクティビティが返されます。これによって、ユーザーの個人スペースから、およびユーザーのコネクションのストリームからアクティビティが返されます。

http://host:port/rest/api/activites?personal=true&connections=true&personGuid=@me&token=token

次のURIでは、ユーザーの個人プロファイルおよびコネクションのアクティビティのみが返されます。

http://host:port/rest/api/activities?serviceIds=oracle.webcenter.peopleconn
ections.profile,oracle.webcenter.peopleconnections.connections&personal=
true&personGuid=@me&token=token

この次の例では、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.3項「アクティビティ・ストリームの詳細な問合せオプションに関する必要な知識」を参照してください。

- レスポンス-本体: 0個以上のアクティビティ

注意:

streamリソースにはアクティビティ・アイテムが含まれているため、そのレスポンスでは、そのアクティビティで参照されているオブジェクトのリソース・リンクも返されることがあります。

streamからリンクされるリソース・タイプ

表41-2に、クライアントがstreamリソースからリンクできるリソース・タイプを示します。

表41-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からリンクされるリソース・タイプ

表41-3は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表41-3 urn:oracle:webcenter:activities:activityに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:activities:activity

icon

urn:oracle:webcenter:activities:activity:icon

activityの読取り専用要素

表41-4に、activityリソースの読取り専用要素を示します。

関連項目:

projectionの詳細は、「共通のリクエスト問合せパラメータ」を参照してください。

注意:

アイコンが使用可能である場合は、activityによって、レスポンスのリンク・セクションのアクティビティ・アイコンへのリンクが返されます。「urn:oracle:webcenter:activities:activity:icon」を参照してください。

表41-4 activityの読取り専用要素

要素

タイプ

説明

activityType

String

アクティビティ・タイプ

サービス内で一意です。たとえば、ディスカッション・サービスはactivityType createForumを返すことができます。

commentsCount

String

dataパラメータにcommentsSummaryを指定した場合、commentsCountパラメータが返されます。

createdDate

Date (String)脚注 1

アクティビティが作成された日付。

description

String

アクティビティの説明。

detail

String

アクティビティの詳細情報(使用可能な場合)。

たとえば、これによって、メッセージのコンテンツ、ドキュメントのファイル名、お気に入り登録が返されます。

detailURLに類似しています。両方またはいずれかを使用することも、どちらも使用しないことも可能です。

detailURL

String

アクティビティの詳細情報(使用可能な場合)。

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」を参照してください。

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 space {object[0]}</message>

そのアクティビティのtemplateParams要素を解析することで、文字列の置換の実行を可能にする使用可能なキーおよび、ユーザー名やアクティビティなど、表示に適したデータを見つけることができます。

アクティビティに関する情報を表示するためのtemplateParamsを使用したUIのコーディング方法の詳細な例は、第53.13.2項「アクティビティ・ストリーム・データの表示」を参照してください。

templateParams要素は、comments、likes、commentsSummaryおよびlikesSummaryオブジェクトへのリンクも提供します(それらがdataパラメータを使用してリクエストされている場合)。これらのリンクによって、オブジェクトに関するすべてのコメントまたはお気に入り登録などを問い合せたり、新しいコメントまたはお気に入り登録を投稿できます。サマリー・リンクによって、コメントまたはお気に入り登録カウントおよびいくつかの最近のコメントまたはお気に入り登録が返されます。「コメントとお気に入り登録の理解」も参照してください。

templateParams要素で返されるリンクは、ユーザー、ドキュメント、スペース(GS)、カスタム・オブジェクトなど、どのような種類のオブジェクトが返されるのかによって異なります。詳細は、「urn:oracle:webcenter:activities:parameter」を参照してください。

注意:

templateParams要素には、場合によっては、メッセージ内で直接参照されない要素が含まれることがあります。

relリンクがviaとマークされている場合、それは基盤となるRESTオブジェクト(たとえば、パラメータではなくドキュメント)へのリンクです。relリンクがalternateおよびタイプtext/htmlとマークされている場合、それはそのオブジェクトのHTMLページへのリンクです。スペース(GS)オブジェクトには、スペースのためのアクティビティ・ストリーム・リンクが含まれています。ユーザーには、アイコンおよびアクティビティ・ストリーム・リンクがあります。他のオブジェクトには、タグ付けしたアイテムおよび関連するタグ付けしたアイテムのリストへのaltリンクを含めることができます(そのオブジェクトに対してタグ付けが有効化されている場合)。標準オブジェクトで、コメントまたはお気に入り登録がサポートされている場合、前述のとおり、それには、comments/commentsSummaryおよびlikes/likesSummaryを含めることができます。

コメントとお気に入り登録の理解

お気に入り登録およびコメントは、それらがデータparameterを使用してリクエストされた場合にのみ表示されます。それらは、デフォルトでは表示されません。コメントは、アクティビティ自体ではなく、アクティビティによって参照されるオブジェクトと関連付けられています。たとえば、ドキュメントを編集する場合、そのコメントは、その編集アクティビティではなくそのドキュメントと関連付けられます。つまり、ドキュメントをお気に入り登録すると、その編集からのコメントも表示されます。

コメントおよびお気に入り登録と関連付けられているリンクは、次のとおりです。

- comments: commentsリンクにより、1つのオブジェクトに対するすべてのコメントを問い合せることができます。このリンクで新しいコメントをPOSTすることもできます。comments POSTの場合、textフィールドが必要です。

- commentsSummary: commentsSummaryリンクによって、コメント・カウントおよびいくつかの最近のコメントが返されます。

- likes - likesリンクによって、1つのオブジェクトのすべてのお気に入り登録を問い合せることができます。このリンクで新しいお気に入り登録をPOSTすることもできます。likes POSTに必要なフィールドはありません。

- likesSummary: likesSummaryリンクによって、お気に入り登録カウントおよび現在のユーザーのお気に入り(使用可能な場合)が返されます。

注意:

Likeオブジェクト自体では、DELETEのみがサポートされ、GETはサポートされません。likesCountおよびcommentsCountアイテムによって、現在のオブジェクトのお気に入り登録またはコメントの数が返されます。

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からリンクされるリソース・タイプ

表41-5は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表41-5 urn:oracle:webcenter:activities:activity:iconに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:activities:activity:icon

urn:oracle:webcenter:parent

urn:oracle:webcenter:activities:activity

41.2 コネクションおよびプロファイルREST API

コネクションおよびプロファイルREST APIを使用して、プロファイルまたはコネクション・リストの参照、コネクション・リストの管理、コネクションの追加または削除、コネクションの招待の送信およびプロファイル・ステータス・メッセージの更新を行います。

この項では、これらのアクションを実行するために使用するREST APIの情報を提供します。次のサブセクションが含まれます:

- 第41.2.1項「コネクションおよびプロファイル・エントリ・ポイント」

- 第41.2.2項「コネクションおよびプロファイル・リソース・タイプの分類」

- 第41.2.3項「コネクションおよびプロファイルのセキュリティに関する考慮事項」

- 第41.2.4項「コネクションおよびプロファイル・リソース・タイプ」

41.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項「リソース・タイプ」を参照してください。

41.2.2 コネクションおよびプロファイル・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第41.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

41.2.3 コネクションおよびプロファイルのセキュリティに関する考慮事項

ピープル・コネクションREST APIのいずれかにアクセスするには、RESTサービスにログインする必要があります。その後、基礎となるサービスにより、権限の確認などが処理されます。

関連項目:

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

41.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からリンクされるリソース・タイプ

表41-6は、クライアントがpeopleリソースからリンクできるリソース・タイプを示しています。

表41-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からリンクされるリソース・タイプ

表41-7は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表41-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の読取り専用要素

表41-8は、personリソースの読取り専用要素を示しています。

注意:

personレスポンス内に存在する要素は、ユーザー・リポジトリの構成方法およびそれによってサポートされている要素に応じて異なります。さらに、address、emails、photos、phoneNumbers、organizationなど表41-8に示すデータのいくつかは、複数のインスタンスを持つことができます。

関連項目:

表41-8に示す要素のいくつかは、「linksパラメータの事前定義済セット」で説明している事前定義済セットで返すことができます。

表41-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からリンクされるリソース・タイプ

表41-9は、クライアントがpersonリソースからリンクできるリソース・タイプを示しています。

表41-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からリンクされるリソース・タイプ

表41-10は、クライアントがlistリソースからリンクできるリソース・タイプを示しています。

表41-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からリンクされるリソース・タイプ

表41-11は、クライアントがlistNamesリソースからリンクできるリソース・タイプを示しています。

表41-11 listNamesに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:people:person:listNames

urn:oracle:webcenter:people:person:listName

listNameレスポンスには、コネクション・リストの名前およびコネクション・リストへのアクセスに使用するURIが含まれます。

listNameへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してlistNameリソースにアクセスする方法を示します。

resourceIndex
person
listNames
listName

listNameの書込み可能要素

表41-12は、listNameリソースの書込み可能要素を示しています。

表41-12 listNameの書込み可能要素

要素

タイプ

必須

制約

説明

name

String

はい

1文字以上の文字

単一のリスト名

listNameからリンクされるリソース・タイプ

表41-13は、クライアントがlistNameリソースからリンクできるリソース・タイプを示しています。

表41-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の書込み可能要素

表41-14は、memberリソースの書込み可能要素を示しています。memberの書込み可能要素は、コネクションをリストに追加したり、ユーザーにコネクションの招待を送信する場合に使用されます。memberリソース自体は、コネクションを削除するためのものであり、書込み可能要素を使用しません。

表41-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の書込み可能要素

表41-15は、statusリソースの書込み可能要素を示しています。

表41-15 statusの書込み可能要素

要素

タイプ

必須

制約

説明

note

String

はい

1文字以上の文字

ステータス・メッセージの内容

statusからリンクされるリソース・タイプ

表41-16は、クライアントがstatusリソースからリンクできるリソース・タイプを示しています。

表41-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の書込み可能要素

表41-17は、invitationsリソースの書込み可能要素を示しています。

表41-17 invitationsの書込み可能要素

要素

タイプ

必須

制約

説明

message

String

いいえ

1文字以上の文字

招待に添付されるメッセージ

invitationsからリンクされるリソース・タイプ

表41-18は、クライアントがinvitationsリソースからリンクできるリソース・タイプを示しています。

表41-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の書込み可能要素

表41-19は、invitationリソースの書込み可能要素を示しています。

表41-19 invitationの書込み可能要素

要素

タイプ

必須

制約

説明

status

String

はい(PUT)

ACCEPTED

IGNORED

招待のステータス。

注意: 招待を受け入れるか無視するときに、それが自身の招待のリストから削除されます。

invitationの読取り専用要素

表41-20は、invitationリソースの読取り専用要素を示しています。

表41-20 invitationの読取り専用要素

要素

タイプ

説明

id

String

招待の一意のID

invitee

personReference

招待の送信先のユーザー

invitor

personReference

招待の送信元のユーザー

sentDate

Date (String)脚注 1

招待が送信された日付

脚注 1 DATEやBOOLEANなどのデータ型は、STRINGとしてAPIに格納されます。

invitationからリンクされるリソース・タイプ

表41-21は、クライアントがinvitationリソースからリンクできるリソース・タイプを示しています。

表41-21 invitationsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:people:invitation

41.3 フィードバックREST API

フィードバックREST APIを使用して、フィードバックを読み取り、削除します。この項では、これらのアクションを実行するために使用するREST APIの情報を提供します。次のサブセクションが含まれます:

- 第41.3.1項「フィードバック・エントリ・ポイント」

- 第41.3.2項「フィードバック・リソース・タイプの分類」

- 第41.3.3項「フィードバックのセキュリティに関する考慮事項」

- 第41.3.4項「フィードバック・リソース・タイプ」

41.3.1 フィードバック・エントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。ピープル・コネクション・サービスでは、各機能に独自のlink要素があります。ピープル・コネクション・サービスのフィードバック機能のエントリ・ポイントを見つけるには、次のresourceTypeを持つlink要素を見つけます。

urn:oracle:webcenter:feedback

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供され、それによって現在のユーザーの受信したフィードバックがすべて返されます。クライアントは、このエントリ・ポイントにHTTPリクエストを送信し、ピープル・コネクション・サービスのフィードバック機能を使用します。

関連項目:

リソース索引の詳細は、第53.5.1項「リソース索引」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

41.3.2 フィードバック・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第41.3.4項「フィードバック・リソース・タイプ」の該当の項を参照してください。

ピープル・コネクション・サービスのフィードバック機能のリソース・タイプの分類は、次のとおりです。

urn:oracle:webcenter:feedback
urn:oracle:webcenter:feedback:message

41.3.3 フィードバックのセキュリティに関する考慮事項

ピープル・コネクションREST APIのいずれかにアクセスするには、RESTサービスにログインする必要があります。その後、基礎となるサービスにより、権限の確認などが処理されます。

関連項目:

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

41.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からリンクされるリソース・タイプ

表41-22は、クライアントがfeedbackリソースからリンクできるリソース・タイプを示しています。

表41-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の読取り専用要素

表41-23は、messageリソースの読取り専用要素を示しています。

表41-23 messageの読取り専用要素

要素

タイプ

説明

body

String

メッセージ・コンテンツ

id

String

メッセージの一意のID

author

personReference

メッセージを作成したユーザー

created

Date (String)脚注 1

リストが作成された日付

receivedUser

personReference

フィードバックを受信したユーザーへの人の参照

脚注 1 DATEやBOOLEANなどのデータ型は、STRINGとしてAPIに格納されます。

feedbackからリンクされるリソース・タイプ

表41-24は、クライアントがfeedbackリソースからリンクできるリソース・タイプを示しています。

表41-24 messageに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:feedback:message

41.4 メッセージ・ボードREST API

メッセージ・ボードREST APIを使用して、ユーザーのメッセージ・ボードまたはスペース・メッセージ・ボードへのメッセージの投稿、読取りおよび削除を行います。

この項では、これらのアクションを実行するために使用するREST APIの情報を提供します。次のサブセクションが含まれます:

- 第41.4.1項「メッセージ・ボード・エントリ・ポイント」

- 第41.4.2項「メッセージ・ボード・リソース・タイプの分類」

- 第41.4.3項「メッセージ・ボードのセキュリティに関する考慮事項」

- 第41.4.4項「メッセージ・ボード・リソース・タイプ」

41.4.1 メッセージ・ボード・エントリ・ポイント

各RESTサービスには、そのサービスのエントリ・ポイントを提供するリソース索引内にlink要素があります。ピープル・コネクション・サービスでは、各機能に独自のlink要素があります。ピープル・コネクション・サービスのメッセージ・ボード機能のエントリ・ポイントを見つけるには、次のresourceTypeを持つlink要素を見つけます。

urn:oracle:webcenter:messageBoard

注意:

リソース索引からのエントリ・ポイントに加えて、個々のユーザーのメッセージ・ボードにナビゲートするために、メッセージ・ボード機能には、スペース・メッセージ・ボードのスペース・レスポンスからのエントリ・ポイントもあります。

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供され、それによって現在のユーザーのメッセージ・ボードが返されます。クライアントは、このエントリ・ポイントにHTTPリクエストを送信し、ピープル・コネクション・サービスのメッセージ・ボード機能を使用します。

関連項目:

リソース索引の詳細は、第53.5.1項「リソース索引」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

41.4.2 メッセージ・ボード・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第41.4.4項「メッセージ・ボード・リソース・タイプ」の該当の項を参照してください。

ピープル・コネクション・サービスのメッセージ・ボード機能のリソース・タイプの分類は、次のとおりです。

urn:oracle:webcenter:messageBoard
urn:oracle:webcenter:messageBoard:message

41.4.3 メッセージ・ボードのセキュリティに関する考慮事項

ピープル・コネクションREST APIのいずれかにアクセスするには、RESTサービスにログインする必要があります。その後、基礎となるサービスにより、権限の確認などが処理されます。

関連項目:

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

41.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コマンドは、表示されているメッセージをすべて取得します。アプリケーション・ユーザー・インタフェースで非表示になっているメッセージは、取得されません。メッセージの非表示および表示の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のメッセージ・ボード・タスク・フローの使用に関する項を参照してください。

- POST

- リクエスト-本体: message
メッセージのPOSTでは、メッセージへのリンクURLの組込みがサポートされています。

関連項目:

messageの詳細は、「urn:oracle:webcenter:messageBoard:message」を参照してください。

messageBoardの読取り専用要素

表41-25は、messageBoardリソースの読取り専用要素を示しています。

表41-25 messageの読取り専用要素

要素

タイプ

説明

messageType

String

メッセージにリンクがある場合、linkを返します。それ以外の場合は、nullを返します。

link

String

リンクとともにメッセージの次のリンク・データを含みます。name、url、icon、description、mimeType、objectId、objectType、serviceId。

messageBoardからリンクされるリソース・タイプ

表41-26は、クライアントがmessageBoardリソースからリンクできるリソース・タイプを示しています。

表41-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の書込み可能要素

表41-27は、messageリソースの書込み可能要素を示しています。

表41-27 messageの書込み可能要素

要素

タイプ

必須

制約

説明

body

String

はい

1文字以上の文字

メッセージ・コンテンツ

messageの読取り専用要素

表41-28は、messageリソースの読取り専用要素を示しています。

表41-28 messageの読取り専用要素

要素

タイプ

説明

id

String

メッセージの一意のID

author

personReference

メッセージを作成したユーザー

created

Date (String)脚注 1

リストが作成された日付

脚注 1 DATEやBOOLEANなどのデータ型は、STRINGとしてAPIに格納されます。

messageからリンクされるリソース・タイプ

表41-29は、クライアントがmessageリソースからリンクできるリソース・タイプを示しています。

表41-29 messageに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:messageBoard:message

41.5 招待の作成

この項では、ピープル・コネクション・サービスREST APIを使用して別のユーザーを招待してコネクション・リストに追加する方法を示します。招待が作成された後、招待を受けた人は、受け入れるか拒否するかを選択できます。この例では、招待の削除方法も示します。

この項には次のサブセクションが含まれます:

- 第41.5.1項「招待の作成」

- 第41.5.2項「招待の削除」

41.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. 図41-1に示すとおり、レスポンスにMontyのGUIDが含まれます。

図41-1 ユーザーのGUIDを含むレスポンス

「図41-1 ユーザーのGUIDを含むレスポンス」の説明

4. GUIDを保存し、それを使用してそのユーザーとコネクションを持てるようにします。

3. 招待を受ける人のGUIDを把握したら、その人を追加するリソースを見つける必要があります。この場合は、自身のconnectionsにその人を追加します。
自身のconnectionsリストを見つけるには、connectionsについてピープル・コネクションのドキュメント(この章)をスキャンします。表41-9「personに関連するリソース・タイプ」で、personリソースからconnectionsにリンクしていることがわかります。便宜上、この表を図41-2に示しています。

図41-2 コネクションLinkの検索

「図41-2 コネクションLinkの検索」の説明

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. 表41-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のアカウントにログインしたときに、図41-3のように、招待が追加されていることを確認できるようになります。

図41-3 招待が表示されているアクティビティ・ストリーム

「図41-3 招待が表示されているアクティビティ・ストリーム」の説明

41.5.2 招待の削除

招待を開始した後、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部の内容は次のとおりです。

- 第42章「リンク・サービスの統合」

- 第43章「タグ・サービスの統合」

- 第44章「検索サービスの統合」

- 第45章「アクティビティ・グラフ・サービスの統合」

42 リンク・サービスの統合

この章では、設計時にWebCenter Portal: Frameworkアプリケーションにリンク・サービスを統合する方法について説明します。

リンクの管理および組込みの詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWebCenter Portalリポジトリの設定に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリンク・サービスの使用に関する項

この章には次の項が含まれます:

- 第42.1項「リンク・サービスの概要」

- 第42.2項「リンク・サービスの基本構成」

- 第42.3項「リンク・サービスの詳細情報」

42.1 リンク・サービスの概要

この項では、リンク・サービスの機能と要件の概要情報を説明します。次のサブセクションが含まれます:

- 第42.1.1項「リンク・サービスの理解」

- 第42.1.2項「リンク・サービスの要件」

- 第42.1.3項「実行時の処理」

42.1.1 リンク・サービスの理解

リンク・サービスでは、関連情報を表示、アクセスおよび関連付ける方法が提供されます。たとえば、プロジェクトの割当てのリストで、割当てごとに対応する仕様にリンクできます。特定のタスクの問題に関するディスカッション・スレッドでは、そのタスクの実行方法を詳細に説明したドキュメントにリンクできます。

リンク・サービスは、アプリケーション開発者がソース・オブジェクト(ディスカッション・サービスなど)とターゲット・オブジェクト(ドキュメントなど)を設定し、これによりユーザーが2つのオブジェクト間のリンクを作成する手段を提供します。

リンク・サービスに関連するアクションには、作成、削除および管理の3つがあります。管理アクションには、作成と削除のアクションが含まれます。

このサービスには、次のカスタムJSFコンポーネントが含まれています。

- リンク詳細ボタン: これはアイコンおよびクリックで「リンク」パネルを開くハイパーリンク(オプション)を表示します。リンク詳細ボタンを使用するには、ページのリージョンの1つとして、リンク - ダイアログ・タスク・フローも含める必要があります。

- リンク詳細メニュー項目: これは「リンク」パネルを開くメニュー項目を追加します。この項目はADFメニューに埋め込むことができます。リンク詳細メニュー項目を使用するには、ページのリージョンの1つとして、リンク - ダイアログ・タスク・フローも含める必要があります。

- リンク・ステータス・アイコン: これには2つのバージョンがあります。
グレーの「リンク」アイコン(図42-1)は、「リンク」ダイアログにリンクがないことを示しています。

図42-1 リンク・アイコン(リンクが存在しない場合)

「図42-1 「リンク」アイコン(リンクが存在しない)」の説明

ゴールドのリンク・アイコン(図42-2)は、リンク・ダイアログにリンクが存在することを示します。

図42-2 リンク・アイコン(リンクが存在する場合)

「図42-2 リンク・アイコン(リンクが存在する場合)」の説明

次のオブジェクトからリンクできます。

- お知らせ

- ディスカッション

- ドキュメント

- イベント

- リスト

- ページ

- カスタムJSFコンポーネント(リンク詳細ボタンなど)をバインドしたオブジェクト

次の新規オブジェクトへリンクできます。

- ディスカッション

- ドキュメント

- イベント

- ノート

- URL

次の新規オブジェクトへリンクできます。

- お知らせ

- ディスカッション

- ドキュメント

- イベント

注意:

リスト・サービスとノート・サービスは、WebCenter Portal: Spacesでのみ使用できます。

メールやピープル・コネクションなどの他のWebCenter Portalサービスでは、リンクは使用できません。

リンク・サービスでは、オブジェクト間の双方向のリンクをサポートしています。たとえば、ディスカッションのトピックからドキュメントへのリンクを作成すると、ドキュメントからディスカッション・トピックへ戻るリンクも作成されます。同様に、ディスカッションのトピックからドキュメントへのリンクを削除すると、ドキュメントからディスカッション・トピックに戻るリンクも自動的に削除されます。双方向のリンクは、URL、ノートおよび特定のリストの行では使用できません。

42.1.2 リンク・サービスの要件

リンクは、アプリケーション内のWebCenterポータル・サービスを自動的に認識します。サービスをアプリケーション内で構成したら、リンクを追加できます。ただし、リンクは保護されたページのみで機能します。リンク・アイコンは、保護されていないページには表示されません。詳細は、第42.2.3項「リンク・サービスのセキュリティ設定」を参照してください。

42.1.3 実行時の処理

リンクは、ソーシャル・ネットワークで情報を簡単に共有できる方法を提供します。リンクは、情報の検索に通常かかる無駄な時間と労力を大幅に削減します。

リンク・サービスは、「リンク」アイコン(図42-1)がアプリケーション内に表示されている場合は常にアクセス可能な「リンク」ダイアログ(図42-3)を介してその機能を公開します。

図42-3 「リンク」ダイアログ

「図42-3 「リンク」ダイアログ」の説明

リンク・サービスによって、次の操作を実行できます。

- オブジェクト(ページなど)を既存のオブジェクト(ディスカッションのトピックなど)にリンクするには、「リンク」アイコンをクリックし、「既存にリンク」を選択して、「ディスカッション」リソースを選択します。オプションで、特定のフォーラムを選択し、リンクを選択するトピックのリンクをクリックできます。

- オブジェクト(ディスカッションのトピックなど)を新規オブジェクト(新規ノートやURLなど)にリンクするには、ディスカッションのトピックの「リンク」アイコンをクリックし、「新規にリンク」を選択して、「ノート」または「URL」を選択します。

- 1つのオブジェクトから複数のリンクを作成します。

- リンクを削除します。

実行時のリンク・サービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

42.2 リンク・サービスの基本構成

この項では、アプリケーションにリンク・サービスを追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第42.2.1項「リンク・サービスの接続の設定」

- 第42.2.2項「リンク・サービスの設計時の追加」

- 第42.2.3項「リンク・サービスのセキュリティの設定」

- 第42.2.4項「リンク・サービスのトラブルシューティング」

42.2.1 リンク・サービスの接続の設定

リンク・サービスには、WebCenter Portalスキーマがインストールされているデータベースへの接続が必要です。リンク・マップ(どのオブジェクトが、どのオブジェクトにリンクされているかなどの、リレーションシップのマッピング情報)はデータベースに格納されます。

データベース接続の設定の詳細は、第7.2.2項「データベース接続の設定」を参照してください。

42.2.2 リンク・サービスの設計時の追加

この項では、リンク・サービスの基本的な組込みについて説明します。次のサブセクションが含まれます:

- 第42.2.2.1項「リンク・サービス・タスク・フロー」

- 第42.2.2.2項「リンク・サービスをアプリケーションに追加する方法」

42.2.2.1 リンク・サービス・タスク・フロー

リンク・サービスには、タスク・フローの1つであるリンク・ダイアログが含まれています。

42.2.2.2 リンク・サービスをアプリケーションに追加する方法

リンク・ダイアログ・タスク・フローをFrameworkアプリケーションに追加するには:

1. 第3章「開発環境の準備」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。

2. WebCenter Portalスキーマのインストールにより、データベースへのデータベース接続を設定していることを確認します(第42.2.1項)。

3. リンク・サービスを追加するページを開きます。

4. コンポーネント・パレットで、「WebCenter Portal - リンク・サービス」をクリックします。

5. リンク詳細ボタン・コンポーネントをページのpanelGroupLayout内にドラッグ・アンド・ドロップします。
この例では、ボタンをpanelGroupLayout内に置きます。ボタンを常にpanelGroupLayout内に置く必要はありません。

6. 「リンク詳細ボタンの挿入」ダイアログ(図42-4)で、一意のオブジェクトの説明、IDおよび名前を入力します。

図42-4 リンク詳細ボタンの挿入ウィザード

「図42-4 リンク詳細ボタンの挿入ウィザード」の説明

このダイアログのプロパティは次のとおりです。

- objectDescription: リンク詳細ボタンをバインドするオブジェクトの説明

- objectId: リンク詳細ボタンをバインドするオブジェクトを識別する一意のID

- objectName: リンク詳細ボタンをバインドするオブジェクトの名前

- serviceId: アプリケーションを識別するアプリケーション全体のID

7. 「serviceId」フィールドに、OnDemandと入力します。

注意:

リンク・サービスでは、serviceIdとobjectIdを組み合せて、リンク詳細ボタンをバインドするオブジェクトを一意に識別します。

8. 「OK」をクリックします。
ページ・ソースに新しいボタンが表示されます(図42-5)。

図42-5 ページ・ソースでのリンク詳細ボタン

「図42-5 ページ・ソースでのリンク詳細ボタン」の説明

9. リソース・パレットで、「カタログ」を開き、「タスク・フロー」フォルダを開きます。

10. ページのリンク詳細ボタンの隣にあるリンク・ダイアログ・タスク・フローをドラッグ・アンド・ドロップし、ポップアップ・メニューから「リージョン」を選択します。

11. ページを保存し、ブラウザで実行します。

42.2.3 リンク・サービスのセキュリティの設定

リンク・サービスには保護されたページが必要です。リンク・アイコンは、保護されていないページには表示されません。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第68.3項「ADFセキュリティの構成」を参照してください。

42.2.4 リンク・サービスのトラブルシューティング

この項では、リンク・サービスで発生する代表的な問題と解決方法について説明します。

問題

「リンク」アイコンが表示されません。

解決方法

リンク・サービスでは、リンク情報が格納されているWebCenter Portalスキーマへのデータベース接続が必要です。データベースへの接続を作成し、アプリケーション・ナビゲータの「アプリケーション・リソース」パネルで使用可能にしていることを確認します。接続が「リソース・パレット」で使用可能な場合は、接続を単純に「リソース・パレット」から、「アプリケーション・リソース」の「接続」フォルダにドラッグします。

問題

既存のリンクは表示されますが、新規のリンクを作成したり既存のリンクを削除できません。

解決方法

RelationshipPermission権限は、リンク・コンポーネントが利用されると自動的に管理者に付与されます。他のユーザーにはADFセキュリティ・ポリシー・エディタを介してこの権限を付与します。詳細は、第68.3.1項「ADFセキュリティ設定の構成」を参照してください。

42.3 リンク・サービスの詳細情報

この項では、このサービスで使用可能なオプション機能について説明します。次のサブセクションが含まれます:

- 第42.3.1項「リンク・サービスREST APIの使用」

42.3.1 リンク・サービスREST APIの使用

WebCenter Portalでは、リンク・サービスをサポートするREST APIが提供されています。リンク・サービスのREST APIは、2つのオブジェクト間のリンクを投稿するために使用します。たとえば、スペース内のイベントとドキュメント間にリンクを作成できます。

この項では、リンク・サービスに関連したREST APIについて説明します。次のサブセクションが含まれます:

- 第42.3.1.1項「リンクのエントリ・ポイント」

- 第42.3.1.2項「リンク・リソース・タイプの分類」

- 第42.3.1.3項「セキュリティに関する考慮事項」

- 第42.3.1.4項「リンクのリソース・タイプ」

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

42.3.1.1 リンクのエントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。リンク・サービスのエントリ・ポイントを検索するには、次のresourceTypeを使用したリンク要素を検索します。

urn:oracle:webcenter:links

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、リンク・サービスを操作します。

リソース索引の詳細は、第53.5.1項「リソース索引」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

42.3.1.2 リンク・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」の該当の項を参照してください。

リンク・サービスの分類は、次のとおりです。

urn:oracle:webcenter:links
urn:oracle:webcenter:links:results

サービス・エントリ・ポイントの他、URLテンプレートにより、クライアントは、問合せパラメータを渡してリクエストをカスタマイズしたり戻されたデータのフォームを制御できます。

42.3.1.3 セキュリティ上の考慮事項

認証は、リンクのREST APIのメソッドを使用する前に必要です。

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

42.3.1.4 リンク・リソース・タイプ

この項では、各リソース・タイプについて説明します。次のサブセクションが含まれます:

- 第42.3.1.4.1項「urn:oracle:webcenter:links:results」

42.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からリンクされるリソース・タイプ

表42-1に、クライアントがこのリソースにリンクできるリソース・タイプを示します。

表42-1 linksに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:links:results

43 タグ・サービスの統合

この章では、設計時にWebCenter Portal: Frameworkアプリケーションにタグ・サービスを統合する方法について説明します。

タグの管理および組込みの詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWebCenter Portalリポジトリの設定に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のタグ・サービスの使用に関する項

関連項目:

検索やタグを使用してカスタム・リソースをレンダリングできるようにする場合や、そのリソースを相互にリンクできるようにする場合には、リソース・ビューアを登録する必要があります。詳細は、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。

この章には次の項が含まれます:

- 第43.1項「タグ・サービスの概要」

- 第43.2項「タグ・サービスの基本構成」

- 第43.3項「タグ・サービスの詳細情報」

43.1 タグ・サービスの概要

タグによって、アイテムに独自の有用な条件を適用可能になり、それらのアイテムを検索結果やタグ・センターでより簡単に見つけられるようになります。タグ・センターは、アプリケーション内のすべてのタグ、タグ付けされたアイテムおよびそれらのタグ付けプログラム間の相互作用を表示するページです。

複数のユーザーがオブジェクトにタグ付けすることが、集約的な知識を資することになり、検索性が高まります。WebCenter Portalの検索では、適用されたタグの品質と頻度に基づいた関連性を示すことで、タグ付けによって得られた知識を利用します。

(データのパブリッシャではなく)データのユーザーはタグによって情報を分類できます。このようにして、タグが個人の生産性向上ツールとして、あるいは組織全体で検索性を高める方法として機能します。

たとえば、各部署の人事部窓口のビューを提供するコンポーネントが、アプリケーションに含まれているとします。このコンポーネントでのタグが使用可能になると、参照したユーザーがブックマークを付けたり、他のユーザーが参照しやすいようにHR、連絡先または部門などのタグを割り当てることができます。

タグ・サービスは、ページ、ドキュメントおよびカスタム・オブジェクトで使用可能です。タグを作成すると、自動的にアクティビティ・ストリームへのイベントが公開されます。

43.1.1 タグ・サービスの理解

タグと呼ばれる有効な条件(複数可)を適用することで、自分自信へ注意を促したり、タグ位置で見つけられることを期待するコンテンツに他のユーザーの注意を促すことができます。「タグ」アイコン(図43-1)が表示される場合はどこでもタグを適用できます。

図43-1 タグ・アイコン

「図43-1 「タグ」アイコン」の説明

タグによって、アイテムに独自の分類を適用できます。たとえば、phoneタグを製品ページに適用して、新しい電話に関する有用な情報を提供できます。自分や他のユーザーが電話を検索するとき、タグ付けされたページが検索結果に表示されます。

タグ・センターにアクセスすると、アプリケーション以外の場所で同じタグが適用されたすべてのユーザーが表示されます。タグ・センター内のタグ・クラウド(図43-2)には、現在適用されているタグがすべて表示されます。

図43-2 タグ・クラウド

「図43-2 タグ・クラウド」の説明

「タグ・クラウド」はすべてのタグのビジュアル表現です。タグは使用頻度に応じて表示され、フォントが大きいほどより頻繁にタグがアイテムに適用されています。タグ・クラウド内のタグをクリックすると、そのタグを使用しているすべてのアイテムのリストを返す検索が実行されます。

43.1.2 タグ・サービスの要件

タグ・サービスでは、WebCenter Portalスキーマを設定し、スキーマへのデータベース接続を作成する必要があります。タグの情報は、データベース内に保存されます。詳細は、第7.2.2項「データベース接続の設定」を参照してください。

注意:

通常、フレームワーク・アプリケーションでタグ付けを追加する場合、検索ツールバーも追加してタグの付いたオブジェクトを検索できるようにする必要があります。検索ツールバーを追加するには、44.2.3項「検索サービスの設計時の追加」の手順に従います。

タグ・サービスにはセキュリティが必要です。認証されていないユーザーは、オブジェクトにタグ付けすることはできません。アプリケーションが保護されていない場合、検索結果では、タグ付けされたアイテムのページは返されません。

ドキュメントへのタグ付け機能を有効にするには、Frameworkアプリケーションでドキュメント・マネージャ・タスク・フローが使用可能である必要があります。詳細は、第29章「ドキュメント・サービスの統合」を参照してください。

43.1.3 実行時の処理

実行時に、タグ・ワードを検索すると、検索結果の「タグ付けしたアイテム」セクションに結果が返されます。デフォルトでは、タグを介してアクセスされるタグ付けしたアイテムは、同じウィンドウを置き換える全画面内でレンダリングされます。これを上書きしてポップアップ・ウィンドウで開くことができます。

カスタム・コンポーネントにタグ付けすることで、検索またはタグ・センターでタグを検索し、タグ付けされたアイテムへ関連付けられたタグによってアクセスできます。

タグ付けされるリソース(したがって検索および表示されるリソース)を公開するサービスに対して、WebCenter Portalでは、リソース・アクション処理フレームワークが提供されます。タグ・サービスは、このフレームワークを使用して、検索結果を処理することが可能になります。詳細は、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。

実行時のサービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

43.2 タグ・サービスの基本構成

この項では、アプリケーションにこのサービスを追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第43.2.1項「タグ・サービスの接続の設定」

- 第43.2.2項「タグ・サービスの設計時の追加」

- 第43.2.3項「タグ・サービスのセキュリティの設定」

43.2.1 タグ・サービスの接続の設定

タグ・サービスには、WebCenter Portalスキーマがインストールされているデータベースへの接続が必要です。

データベース接続の設定の詳細は、第7.2.2項「データベース接続の設定」を参照してください。

43.2.2 タグ・サービスの設計時の追加

基本的なタグ付け機能を有効にするには、タグ付けボタン・コンポーネントかタグ付けメニュー項目コンポーネントのいずれかと、タグ付け - ダイアログ・タスク・フローを追加する必要があります。さらに、カスタム・オブジェクトにタグ付けするには、ユーザーがそのオブジェクトを探す場合のために、タグ付けされたコンポーネントを表示するリソース・ビューアを登録する必要があります。

この項では、タグ付けボタンとタグ付け - ダイアログ・タスク・フローの追加によりタグ付けを有効にする方法について説明します。次のサブセクションが含まれます:

- 第43.2.2.1項「タグ・サービスのコンポーネント」

- 第43.2.2.2項「タグ・サービス・タスク・フロー」

- 第43.2.2.3項「タグ・サービスをページに追加する方法」

- 第43.2.2.4項「タグ・サービス・タスク・フロー・パラメータを変更する方法」

43.2.2.1 タグ・サービスのコンポーネント

このサービスには、次のJSFコンポーネントが含まれています。

- タグ付けボタン: タグ付けボタンを追加する場合には、ページ上のタグ・リンクによって「このアイテムをタグ付け」(または「このページをタグ付け」)ダイアログを実行時に呼び出すことができます。

- タグ付けメニュー項目: タグ付けメニュー項目を追加する場合には、ページ上のメニュー・オプションによって「このアイテムをタグ付け」(または「このページをタグ付け」)ダイアログを実行時に呼び出すことができます。

「コンポーネント・パレット」で、コンポーネントをページへドラッグ・アンド・ドロップします。結果ダイアログ・ボックスで、タグ・コンポーネントの属性を構成できます。タグ・コンポーネントの属性を構成できます。たとえば、SharedParam属性を使用して「共有」チェック・ボックスを無効にします。(default値の場合、チェック・ボックスが有効になり、ユーザーは、チェック・ボックスを自由に選択または選択解除できます。always値の場合、チェック・ボックスはtrue状態で無効になり、すべてのタグはパブリックになります。never値の場合、チェック・ボックスはfalse状態で無効になり、すべてのタグはプライベートになります。)別の例として、ResourceScope属性を使用すると、検索をデフォルト・スコープで実行したが結果は他のスコープに示される場合に、各結果の横に「タグ付け」ボタンがある検索結果リストなどの、異なるスコープ内のオブジェクトにタグ付けできます。コンポーネント属性の詳細は、オンライン・ヘルプを参照してください。

43.2.2.2 タグ・サービス・タスク・フロー

表43-1に、タグ・サービス・タスク・フローをリストします。

表43-1 タグ・サービス・タスク・フロー

タスク・フロー

定義

タグ付け - ダイアログ

このタスク・フローは、特定のオブジェクトにタグ付けするためのダイアログを表示します。ページ上にドロップしたときにレンダリングされる可視のユーザー・インタフェースはありません。タグ付けボタンをクリックしたときにのみ表示されます。

タグ付け - 個人ビュー

このタスク・フローは現在のユーザーによって作成されたタグと、それらのタグが付けられたオブジェクトおよびタグのクラウド・ビューを表示します。サービスIDの入力パラメータによって、目的のタグ付けされたアイテムを表示できます。

これは、非パブリック・タスク・フローであるため、認証が必要です。

タグ付け - 関連リンク

一意のIDによって識別されたオブジェクトの場合、このタスク・フローによって、類似するタグが付けられた他のすべてのオブジェクトがリスト表示されます。

リストされた他のオブジェクトには、同様にタグ付けされたオブジェクトが含まれます。つまり、それらのタグ・セットのうち少なくとも1つは共通しています。リストは共有するタグ数順です。

タグ付け - タグ・クラウド

このタスク・フローは、使用されているすべてのタグのビジュアル表現であるタグ・クラウドを表示します。タグは使用頻度に応じて表示されます。より頻繁に使用されているタグは太字で表示されフォント・サイズが異なります。フォントが大きいほど、より頻繁にタグが適用されています。

タグ・クラウドでタグをクリックすると、タグ・センターにリダイレクトされ、そのタグが選択されます。

このタスク・フローは、タグ付けされたアイテムがあるページに表示されます。そこでは、ページ内のすべてのタグにリソース・アクション処理(RAH)リンクが付けられます。

タグ付け - タグ選択

タグ・クラウド・タスク・フローと同様に、タグ選択タスク・フローでもタグ・クラウドが表示されます。ただし、タグを選択すると、タグが選択済としてマークされ、結果が関連リソース・タスク・フローに表示されます。タグ・センターにリダイレクトされることはありません。

タグ・クラウドでタグをクリックすると、このタスク・フローとタグ付け - タグ付けしたアイテム・タスク・フローによって、そのタグを使用するアイテムが表示されます。(つまり、タグ付け - タグ・クラウド・タスク・フローでタグを選択することにより、タグ付け - タグ付けしたアイテム・タスク・フローなど、関連するすべてのイベント・コンシューマにタグ・ワードがイベントとして送信されます。)

タグ付け - タグ付けしたアイテム

このタスク・フローには、タグ付け済のアイテム・ページまたはドキュメントが表示されます。渡されたタグによってタグ付けされたアイテムのみを表示するようにそれ自身を調整できます。このタスク・フローは、タグ付け - タグ・クラウド・タスク・フローから送信されたイベントをリスニングできます。

関連項目:

第43.2.2.4項「タグ・サービス・タスク・フロー・パラメータを変更する方法」

43.2.2.3 タグ・サービスをページに追加する方法

タグ・サービスをWebCenter Portal: Frameworkアプリケーションに追加するには:

1. 第3章「開発環境の準備」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。

2. WebCenter Portalスキーマがインストールされたデータベースへのデータベース接続が設定されていることを確認します。

3. 検索ツールバーを含めたページを開きます。

4. コンポーネント・パレットでタグ付けボタンを選択し、ページのPanelGroupLayout内にドロップします。検索ツールバーの左に配置して、PanelGroupLayoutの最初の子にします。タグ・ボタンによって、ユーザーはタグ付けを開始できます。

5. 「タグ付けボタンの挿入」ダイアログに入力します。表43-2に、ダイアログのフィールドの説明とサンプルの値を示します。

表43-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と入力します。

図43-3 カスタム・コンポーネントの「タグ付けボタンの挿入」ダイアログ

「図43-3 カスタム・コンポーネントの「タグ付けボタンの挿入」ダイアログ」の説明

6. 「OK」をクリックします。

注意:

タグ付けボタンには、設定可能な追加のプロパティが含まれています。たとえば、SharedParamは、「共有」チェック・ボックスを無効にできます。(default値の場合、チェック・ボックスが有効になり、ユーザーは、チェック・ボックスを自由に選択または選択解除できます。always値の場合、チェック・ボックスはtrue状態で無効になり、すべてのタグはパブリックになります。never値の場合、チェック・ボックスはfalse状態で無効になり、すべてのタグはプライベートになります。)

7. リソース・パレットで「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

8. ページ上のリソース・パレットから「タグ付け - ダイアログ」をドラッグ・アンド・ドロップし、オプションで匿名ページのログイン用にリダイレクションURLを追加します。

9. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

10. カスタム・リソースの場合に、リソース・ビューアを登録するには、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」の手順を参照してください。タグ付けされるリソース(したがって検索および表示されるリソース)を公開するサービスに対して、WebCenter Portalでは、リソース・アクション処理フレームワークが提供されます。タグ・サービスは、このフレームワークを使用して、検索結果を処理することが可能になります。

タグ・サービスを追加した「ソース」ビューには、例43-1に似たソースが表示されます。

例43-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をクリックすると、ダイアログに作成したリソース・ビューアが示されます(図43-4)。

図43-4 リソース・ビューア

「図43-4 リソース・ビューア」の説明

43.2.2.4 タグ・サービス・タスク・フロー・パラメータを変更する方法

一部のタグ・サービス・タスク・フローには、オプションのタスク・フロー・バインディング・パラメータがあります。

注意:

タグ・サービス・タスク・フローのプロパティは、別のリソースや別のサービスのアイテムを表示する必要がないかぎり変更しないでください。

ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を確認して調整するには:

1. ページの下部にある「バインディング」タブ(next to the 「ソース」タブの横)をクリックし、「タスク・フロー・バインディングの編集」ダイアログにナビゲートします。

2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。図43-5に、「実行可能ファイル」セクションに検索タスク・フローが表示されている例を示します。

図43-5 ページ・データ・バインディング定義

「図43-5 ページ・データ・バインディング定義」の説明

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ図43-6で、必要に応じてバインディング・パラメータ値を変更します。

図43-6 タグ付け - 関連リンク・タスク・フロー用の「タスク・フロー・バインディングの編集」ダイアログ

「図43-6 タグ付け - 関連リンク・タスク・フロー用の「タスク・フロー・バインディングの編集」ダイアログ」の説明

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

表43-3に、タグ・サービス・タスク・フロー固有のプロパティを示します。

表43-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または空の場合、ログインは表示されません。

タグ付け - ダイアログ

43.2.3 タグ・サービスのセキュリティの設定

タグ・サービスにはセキュリティが必要です。認証されていないユーザーは、オブジェクトにタグ付けすることはできません。アプリケーションが保護されていない場合、検索結果では、タグ付けされたアイテムのページは返されません。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第68.3項「ADFセキュリティの構成」を参照してください。

注意:

カスタム・オブジェクトを検索またはタグを使用して検出できるように、リソース・ビューアを登録する必要があります。ユーザーがリソースを参照できるかどうかをリソース・ビューアのauthorizerClassが決定する方法は、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。

43.3 タグ・サービスの詳細情報

この項では、このサービスで使用可能なオプション機能について説明します。次のサブセクションが含まれます:

- 第43.3.1項「タグ・サービスJava APIの使用」

- 第43.3.2項「タグ・サービスREST APIの使用」

- 第43.3.3項「ページにタグを表示するオプションの方法」

- 第43.3.4項「カスタム・オブジェクトにタグ付けするリソース・アクション処理フレームワークの使用方法」

- 第43.3.5項「タグ・サービスのトラブルシューティング」

注意:

タグ付けコンポーネントのロギング・レベルは、(他のコンポーネントと同様に)WLSホームの配下にあるlogging.xmlファイルで高くすることができます。

43.3.1 タグ・サービスJava APIの使用

カスタム・コンポーネントにタグAPIを実装し、WebCenter Portal REST APIまたはタグ・タスク・フローおよびコンポーネントと互換性のあるタグ付けバックエンドを作成できます。

Java APIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

43.3.2 タグ・サービスREST APIの使用

WebCenter Portalは、タグをサポートするためのREST APIを提供しています。タグREST APIを使用して、次のことを実行できます。

- すべてのタグを検索するか、基準によって一部のタグを検索する

- 特定のタグを取得する

- タグを削除する

- タグをアップデートまたは名前変更する

- タグ付けされたアイテムを取得する

- アイテムからタグを解除する

- 新しいタグ付けしたアイテムを追加する

- タグ付けしたアイテムのタグを変更する

- タグ付けしたすべてのアイテムを検索するか、タグ付けしたアイテムを日付やタグ・ワードなどのフィルタによって検索する

- タグによって関連ユーザーを取得する

この項では、タグ・サービスに関連したREST APIについて説明します。次のサブセクションが含まれます:

- 第43.3.2.1項「タグ・エントリ・ポイント」

- 第43.3.2.2項「タグ・リソース・タイプの分類」

- 第43.3.2.3項「セキュリティに関する考慮事項」

- 第43.3.2.4項「タグ・リソース・タイプ」

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

43.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項「リソース・タイプ」を参照してください。

43.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)はサポートされていません。

43.3.2.3 セキュリティ上の考慮事項

認証は、タグのREST APIのメソッドを使用する前に必要です。

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

43.3.2.4 タグ・リソース・タイプ

この項では、各リソース・タイプについて説明します。次のサブセクションが含まれます:

- 第43.3.2.4.1項「urn:oracle:webcenter:tagging:tags」

- 第43.3.2.4.2項「urn:oracle:webcenter:tagging:tag」

- 第43.3.2.4.3項「urn:oracle:webcenter:tagging:taggedItems」

- 第43.3.2.4.4項「urn:oracle:webcenter:tagging:taggedItem」

- 第43.3.2.4.5項「urn:oracle:webcenter:tagging:users」

43.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。

注意:

パラメータは一定の組合せのみで使用できます。

表43-4は、各操作で使用可能なパラメータの組合せを示しています。たとえば、tagsパラメータはserviceIdパラメータと一緒には指定できません。

表43-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の許容されるリクエスト本文を判断します。

表43-5は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。タグには、それ自身と、結果の次のページまたは前のページへのリファレンス・リンクがあります。

表43-5 tagsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:tagging:tags

前/次

urn:oracle:webcenter:tagging:tags

43.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

- リクエスト - 本体: なし

- レスポンス - 本体: なし

例43-2 タグ名を変更するためのPUTコマンドの本文

<tag>
<name>newId</name>
</tag>

tagからリンクされるリソース・タイプ

resourceTypeリンク属性は、リンクが指すリソースのタイプを示しています。クライアントはresourceTypeを使用して、GETおよびPOSTの予測されるレスポンス本文とPOSTおよびPUTの許容されるリクエスト本文を判断します。

表43-6は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。タグには、それ自身、関連するtaggedItem、関連するユーザーおよび関連するタグへのリファレンス・リンクがあります。

表43-6 tagに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:tagging:tag

urn:oracle:webcenter:tagging:taggedItems

urn:oracle:webcenter:tagging:users

urn:oracle:webcenter:tagging:tags

43.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、scopeGuid、tags、users、dt、shared、itemsPerPage

- レスポンス - 本体: タグ付けしたアイテム

ここで:

- serviceId - アイテムのサービスIDを指定します。

- keyword - リソースのタイトルのキーワードを指定します。

- relatedRID - 関連するタグを指定します。たとえば、アイテム1に「webcenter help」として、アイテム2に「fusionapps documents」として、アイテム3に「webcenter documents」としてタグ付けし、relatedRID=item3を設定すると、アイテム3と共通のタグを共有しているため、アイテム1とアイテム2が返されます。

- scopeGuid - ポータルのGUIDを指定します。ホーム・スペースに設定すると、すべての(フィルタされていない)タグが表示されます。

- tags - URLエンコードのスペース(+)で区切られたこのタグ・リストでフィルタするように指定します。たとえば、「webcenter」と「help」がタグ付けされたアイテムは、tags=webcenter+helpで検索できます。

- users - URLエンコードのスペース(+)で区切られたこのユーザー・リストでフィルタするように指定します。たとえば、users=monty+vicki+pat。

- dt - この日付、デフォルトではブックマークが保存された最近の日付{DD-MM-CCYY}でブックマークをフィルタするように指定します。

- shared - 個人用リソース(同じユーザーによってのみプライベートにタグ付けされたリソース)のみを返すにはtrueを指定し、システム・リソース(1つ以上のパブリック・タブを持つリソース)を返すにはfalseを指定します。

- itemsPerPage - レスポンスで返す結果の最大数を指定します(1-n)。これはページ区切りに使用されます。

注意:

パラメータは一定の組合せのみで使用できます。

表43-7は、各操作で使用可能なパラメータの組合せを示しています。たとえば、tagsパラメータはserviceIdパラメータと一緒には指定できません。

表43-7 タグ付きアイテムを取得するために使用可能なパラメータの組合せ

APIメソッド

serviceId

keyword

relatedRID

scopeGuid

タグ

ユーザー

dt

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の許容されるリクエスト本文を判断します。

表43-8は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。タグ付きアイテムには、それ自身と、結果の次のページまたは前のページへのリファレンス・リンクがあります。

表43-8 taggedItemsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:tagging:taggedItems

前/次

urn:oracle:webcenter:tagging:taggedItems

43.3.2.4.4 urn:oracle:webcenter:tagging:taggedItem

このリソース・タイプを使用して、タグ付けされたアイテムと関連するリソースを参照するため(GET)、タグ付けされたアイテムを追加するため(POST)、タグ付けされたアイテムのタグを更新するため(PUT)およびアイテムからすべてのタグを削除するため(DELETE)に使用するURIを識別します。

GET操作のレスポンスには、1つのタグ付きアイテムまたは日付、タグ・ワードなどでフィルタできるすべてのタグ付きアイテムが含まれています。各タグには、そのタグでの操作に使用されるリンクがあります。POST操作のレスポンスには、このタグのコレクション内で作成されたタグ付きアイテムとそのタグ付きアイテムで操作するためのリンクが含まれています。

taggedItemへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
taggedItem

resourceindex
spaces
spaces:resourceindex
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の許容されるリクエスト本文を判断します。

表43-9は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。タグ付きアイテムには、それ自身および関連するタグ付きアイテムへのリファレンス・リンクと外部リンクがあります。

表43-9 taggedItemに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:tagging:taggedItem

urn:oracle:webcenter:tagging:taggedItems

alternate

リソースのタイプは、タグが付けられたリソースのタイプによって異なります。たとえば、ページはurn:oracle:webcenter:page:pageのようになります

43.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の許容されるリクエスト本文を判断します。

表43-10に、個々のユーザーがこのリソースからリンクできるリソース・タイプを示します。ユーザーには、それ自身と、結果の次のページまたは前のページへのリファレンス・リンクがあります。

表43-10 usersに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:tagging:users

前/次

urn:oracle:webcenter:tagging:users

43.3.3 ページにタグを表示するオプションの方法

タグ付けボタンとタスク・フローを1ページごとに追加することは可能ですが、通常は、ページを構築する際に適用するページ・テンプレートの一部として検索ツールバーとタグを追加します。ページ・テンプレートを使用してタグを追加するには:

1. タグ・サービスを含むページを作成するプロジェクトを開きます。

2. プロジェクト名を右クリックし、ポップアップ・メニューから「新規」を選択します。

3. 「カテゴリ」で「JSF」を選択し、「項目」で「JSFページ・テンプレート」を選択します。

4. 「ファイル名」にlooksee1templateと入力します。

図43-7 「JSFページ・テンプレートの作成」ダイアログ

「図43-7 「JSFページ・テンプレートの作成」ダイアログ」の説明

5. 「OK」をクリックします。

6. 「ソース」ビューに移り、例43-3のようにコードを変更します。

例43-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. 図43-8に示すように「タグ付けボタンの挿入」ダイアログに入力します。
表43-11に、ダイアログのフィールドの説明とサンプルの値を示します。

表43-11 ページの「タグ付けボタンの挿入」ダイアログ・ボックスのフィールド

フィールド

説明

ResourceId

ページの一意の識別子。

このケースでは、リソースIDはページを表すため、#{facesContext.viewRoot.viewId}と入力します。

ResourceName

ページの名前。

このケースでは、#{facesContext.viewRoot.viewId}と入力します。(よりわかりやすい名前の入力も可能です。)

ServiceId

リソース・ビューアを追加する際、service-definition.xmlに追加するサービス識別子。

このケースでは、oracle.webcenter.pageと入力します。

注意: oracle.webcenter.pageは、ページ・サービス・ライブラリで利用可能なため、service-definition.xmlに追加が必要なものはありません。

図43-8 ページの「タグ付けボタンの挿入」ダイアログ

「図43-8 ページの「タグ付けボタンの挿入」ダイアログ」の説明

9. 「OK」をクリックします。

10. リソース・パレットで「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

11. リソース・パレットから「タグ付け - ダイアログ」をドラッグし、ページのpanelGroupLayout内にドロップします。

12. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

13. 「検索ツールバー」をドラッグし、ページ・テンプレートのpanelGroupLayoutに先ほど追加した「タグ付け - ダイアログ」の後にドロップします。

14. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

15. 「ドキュメント・ライブラリ - 最近のドキュメント」をドラッグし、識別子sidebarを持つpanelSplitterの2番目のファセットにドロップします。

16. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

17. 「タスク・フロー・バインディングの編集」ダイアログで、${'MyFileSystem'}などのドキュメント・ライブラリのコンテンツ・リポジトリへの接続の名前をconnectionNameに入力します。コンテンツ・リポジトリへの接続の設定に関する詳細は、第26.2項「コンテンツ・リポジトリ接続の構成」を参照してください。

18. ページ・テンプレートのソースは、例43-4のようになります。

例43-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に入力します。コンテンツ・リポジトリへの接続の設定に関する詳細は、第26.2項「コンテンツ・リポジトリ接続の構成」を参照してください。

20. ページを保存します。

ページをタグによって実行するには:

1. アプリケーション・ナビゲータでSearch.jspxページを実行します。

2. ログインしてページが表示されたら、「タグ」リンクをクリックします。

3. 「このページをタグ付け」ダイアログ・ボックスで、「タグ」にsearch page test customappと入力します(図43-9)。

図43-9 検索ページの「このページをタグ付け」ダイアログ・ボックス

「図43-9 検索ページの「このページをタグ付け」ダイアログ・ボックス」の説明

4. 「保存」をクリックします。

5. Documents.jspxに移ります(または、これを個別に実行します)。

6. 「タグ」リンクをクリックします。

7. 「このページをタグ付け」ダイアログ・ボックスで、「タグ」にdoclib documents page test customappと入力します(図43-10)。

図43-10 ドキュメント・ページの「このページをタグ付け」ダイアログ・ボックス

「図43-10 ドキュメント・ページの「このページをタグ付け」ダイアログ・ボックス」の説明

8. 「保存」をクリックします。

9. Documents.jspxページの検索ツールバーにsearchと入力し、検索アイコンをクリックします。

10. 「タグ」でsearchをクリックします。

43.3.4 カスタム・オブジェクトにタグ付けするリソース・アクション処理フレームワークの使用方法

タグ付け(と検索および参照)するリソースを公開するサービスに対して、WebCenter Portalでリソース・アクション処理フレームワークが提供されています。たとえば、表内の行にタグ付けできます。

リソース・ビューアを登録するには、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。

43.3.5 タグ・サービスのトラブルシューティング

この項では、タグ・サービスの実装に関するトラブルシューティングのヒントについて説明します。次のサブセクションが含まれます:

- 第43.3.5.1項「タグをクリックしたときにタグ・センターの結果が表示されない」

- 第43.3.5.2項「タグ付けしたドキュメントがタグ・センターに表示されない」

- 第43.3.5.3項「ページにタグ付けボタンが表示されない」

- 第43.3.5.4項「タグ付けしたリソースをクリックしても正しいページに移動しない」

43.3.5.1 タグをクリックしたときにタグ・センターの結果が表示されない

問題

ユーザーが表示権限を持つリソースがタグ付け済ですが、ユーザーがタグ・センターでそのリソースを参照できません。

解決方法

1. service-definition.xmlで、リソース・タイプにリソース・オーサライザが適切に構成されていることを確認してください。

2. リソース・オーサライザのロギングを有効化することで、必要なオブジェクトを参照する権限が与えられていることを確認してください。

43.3.5.2 タグ付けしたドキュメントがタグ・センターに表示されない

問題

タグ付けしたWebCenter Portalコンテンツ・サーバーのドキュメントがタグ・センターに表示されません。

解決方法

コンテンツ・サーバーでWebCenter Portalコンポーネントのバーションを確認します。WebCenter Portalリリース11.1.1.6.0では結果セット名が変更されています。

43.3.5.3 ページにタグ付けボタンが表示されない

問題

タグ付けボタン・コンポーネントをページにドロップしても、表示されません。

解決方法

- タグ付けボタンは、ページにタグ付けダイアログ・タスク・フローが存在することを必要とします。このタスク・フローをページまたはページ・テンプレートにドロップしてください。

- タグ付けボタンは、有効なデータベース接続を必要とします。データベース接続が存在することを確認してください。

43.3.5.4 タグ付けしたリソースをクリックしても正しいページに移動しない

問題

タグ付けしたリソースをタグ・センターでクリックしても正しいページにリダイレクトされません。

解決方法

タグ付けリンクはすべて、リソース・アクション処理(RAH)フレームワークによって生成されます。RAHが適切に構成されていることを確認してください。

- リソース・ビューアが適切に構成されているかどうかを確認するために、そのリソース・タイプについてservice-definition.xmlを確認してください。

- このリソースに渡されたresourceIDおよびserviceIDパラメータが正しいことを確認してください。

関連項目:

第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」

44 検索サービスの統合

この章では、設計時にWebCenter Portal: Frameworkアプリケーションに検索サービスを統合する方法について説明します。

検索の管理および組込みの詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWebCenter PortalのOracle SES検索の管理に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の検索サービスの使用に関する項

この章には次の項が含まれます:

- 第44.1項「検索の概要」

- 第44.2項「検索サービスの基本構成」

- 第44.3項「検索サービスの詳細情報」

44.1 検索の概要

WebCenter Portalは、直観的なユーザー・インタフェースを介して情報を検出できる統一された拡張可能なフレームワークを提供しています。このフレームワークでは、ユーザーが表示権限を持つ結果のみを返すことにより、アプリケーションのセキュリティ設定を順守します。WebCenter Portalには、アプリケーションを検索する次の2つの方法が用意されています。

- Oracle Secure Enterprise Search (SES)アダプタ

- Oracle WebCenter Portalライブ検索アダプタ

Frameworkアプリケーションの場合、 Oracle SESがデフォルトの推奨検索プラットフォームとして設定されます。WebCenterのライブ検索アダプタより高度なスケーラビリティとパフォーマンスを提供する以外にも、Oracle SESは次の理由で有益です。

- Oracle SES検索では、統合ランキング結果を提供します。その場合、最も関連性の高い項目が最初に表示されます。

- Oracle SESは、より徹底した検索を提供します。たとえば、リストを検索する場合、WebCenter Portalライブ検索はリスト名と説明のみを検索しますが、Oracle SESはリストの列名と列のコンテンツも検索します。

- Oracle SES検索では、WebCenter Portal外のリポジトリの検索が可能です。Oracle SES検索の結果は、WebCenter Portalの検索結果と同じ結果セットに表示されます。

- Oracle SES検索では、検索インタフェースをカスタマイズするための検索サービスREST APIとデータ・コントロールがサポートされています。

Oracle SESまたはライブ検索アダプタ機能に加え、ドキュメント・ツールはファイル検索用の独自の検索エンジンを提供しています。これにより、ファイルの検索範囲を絞り込むことができるため、時間が節約される上、検索結果の妥当性が向上します。

関連項目:

アプリケーションへの外部検索エンジンの統合の詳細は、第13.4項「ポータル・ナビゲーション使用によるサイトマップの作成」を参照してください

44.1.1 検索サービスの理解

Oracle SESは、次のリソースについての統合ランキング結果を提供します。

- ドキュメント(Wikiやブログを含む)

- お知らせおよびディスカッション

- WebCenter Portal: Spacesのスペース、リスト、ページ・コンテンツおよびピープルの各リソース

注意:

WebCenter Portal: Spacesアプリケーションには、Spacesのスペース、リスト、ページおよびピープルの各リソースを索引付けするOracle SESクローラが組み込まれています。このクローラはFrameworkアプリケーションではサポートされていません。

44.1.1.1 Oracle SESアダプタを使用した検索の理解

サポート対象のOracle SESのバージョンは10.1.8.4.x以降です。Oracle SESリリース11.1.2.2の使用を強くお薦めします。Oracle SESを使用した検索を実行するには、Oracle SES Administration、Oracle WebCenter Content: Content ServerおよびOracle WebCenter Portalのディスカッション・サーバーで追加の構成が必要です。

関連項目:

第44.3.4項「Oracle SESアダプタを使用する検索の構成」

44.1.1.2 WebCenter Portalの検索アダプタを使用した検索の理解

Oracle SESは最高のパフォーマンスを実現するための優先検索プラットフォームですが、Oracle SESを使用した検索を手動でオーバーライドして、Frameworkアプリケーション検索でWebCenter Portalのオリジナル検索アダプタを使用することもできます。WebCenter Portalの検索アダプタでは、ドキュメント、タグ、ピープル、ページなど、有効かつ検索可能なすべてのサービスが対象になります。

関連項目:

第44.3.5項「WebCenter Portalの検索アダプタを使用する検索の構成」

44.1.1.3 検索結果に対するクリック・アクション

Frameworkアプリケーションでリソース・アクション処理が指定されていない場合は、検索結果をクリックすると、デフォルトのアクションにより、新しいブラウザ・ウィンドウに検索結果がレンダリングされます。また、ドキュメント、ディスカッションまたはお知らせなどの、リソース・ビューアを提供するサービスからの結果が、リソース・ビューアに表示されます。リソース・ビューアとリソース・アクション処理フレームワークの詳細は、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。

44.1.2 実行時の処理

実行時に、ユーザーは検索タスク・フローまたは検索ツールバーからグローバルな(アプリケーション全体の)検索を実行し、検索を調整および保存できます。

実行時のWebCenter Portalの検索の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

44.2 検索サービスの基本構成

この項では、アプリケーションに検索サービスを追加するための手順について説明します。次のサブセクションが含まれます:

- 第44.2.1項「構成ロードマップ - Oracle SES」

- 第44.2.2項「Oracle SESの接続の設定」

- 第44.2.3項「検索サービスの設計時の追加」

- 第44.2.4項「検索サービスのセキュリティの設定」

44.2.1 構成ロードマップ - Oracle SES

構成プロセス全体のガイドとしてこの項のロードマップを使用してください。

注意:

Oracle SESを使用した検索をオーバーライドして、オリジナルのWebCenter Portalライブ検索アダプタを使用する場合は、Oracle SESの構成は不要です。スキップして第44.2.3項「検索サービスの設計時の追加」に進みます。

図44-1と表44-1は、Frameworkアプリケーション内でOracle SESを動作させるために必要な前提条件とタスクの概要を示しています。

図44-1 Frameworkアプリケーション用のOracle SESの構成

「図44-1 Frameworkアプリケーション用のOracle SESの構成」の説明

表44-1 Frameworkアプリケーション用のOracle SESの構成

アクター

タスク

サブタスク

管理者

1. WebCenter PortalおよびOracle SESをインストールします

2. アイデンティティ管理システムを使用してOracle SESを構成します

3. Oracle SESでドキュメント・サービス・マネージャを設定します

4. 次のいずれかのツールを使用して、フェデレーション・トラステッド・エンティティを作成します

- Oracle SES管理ツール

- WLST

5. 次のいずれかのツールを使用して、2つのクロール・ソース、ドキュメント・クローラとディスカッション・クローラを作成します

- Oracle SES管理ツール

- WLST

6. 次のいずれかのツールを使用して、クロール・ソースのソース・グループを作成します

- Oracle SES管理ツール

- WLST

開発者

7. アプリケーションに検索サービスを統合します

7.a JDeveloperでOracle SESへの接続を構成します

7.b JDeveloperでページに検索サービス・タスク・フローを追加します

開発者または管理者

8. 次のいずれかのツールを使用してアプリケーションをデプロイします

- JDeveloper (開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

- WLS管理コンソール(管理者)

管理者

9.(オプション)SSLを使用してOracle SESへの接続を保護します

管理者

10. 次のいずれかのツールを使用して、追加検索パラメータを構成します

- Fusion Middleware Control

- WLST

- WLS管理コンソール

44.2.2 Oracle SESの接続の設定

Oracle SESを使用して検索を実行するには、アプリケーションにOracle SES接続を追加する必要があります。詳細は、第44.3.4項「Oracle SESアダプタを使用する検索の構成」を参照してください。

注意:

WebCenter Portal外のリポジトリを検索するためにOracle SESへの接続を作成し、Fusion Middleware ControlやWLSTでデフォルトの検索クローラとしてのOracle SESの使用をオーバーライドできます。これにより、ユーザーは、ピープルなどの他のFrameworkアプリケーション・リソースを検索できます。

1. 第44.2.3項「検索サービスの設計時の追加」に従って、検索ツールバーをページに追加します。

2. Oracle SESへの接続を設定します。アプリケーション・ナビゲータで、「アプリケーション・リソース」を開きます。「接続」ノードを右クリックして「接続の作成」を選択し、「Oracle Secure Enterprise Search」を選択します。
「アプリケーション・リソース」または「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サーバーの両方に存在するユーザーの名前を入力します。
図44-2のように表示されます。

8. 図44-2 「Oracle SES接続の作成」ダイアログ

「図44-2 「Oracle SES接続の作成」ダイアログ」の説明

「接続のテスト」をクリックして、ステータスを確認します。
接続が正常な場合は、「OK」をクリックします。

アプリケーションにOracle SES接続を含めると、「アプリケーション・リソース」パネルでの表示は図44-3のようになります。

図44-3 「アプリケーション・リソース」でのOracle SES接続

「図44-3 「アプリケーション・リソース」でのOracle SES接続」の説明

例44-1に示すように、Oracle SES接続は現在、connections.xmlファイルに含まれ、デフォルト接続はadf-config.xmlファイルに含まれています。

例44-1 adf-config.xmlのOracle SES接続

<ses-properties>
<connection>SESconnection</connection>
<data-group>MySources</data-group>
</ses-properties>

注意:

FrameworkアプリケーションをOracle WebLogic管理対象サーバーにデプロイすると、WLSTまたはFusion Middleware Controlを使用してこれを構成できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』を参照してください。

44.2.3 検索サービスの設計時の追加

この項では、検索サービス・タスク・フローについて説明するとともに、検索サービスをアプリケーションに統合する方法についても説明します。次のサブセクションが含まれます:

- 第44.2.3.1項「検索サービス・タスク・フロー」

- 第44.2.3.2項「検索サービスをページに追加する方法」

- 第44.2.3.3項「検索サービス・タスク・フローのパラメータを変更する方法」

44.2.3.1 検索サービス・タスク・フロー

表44-2に、検索サービス・タスク・フローを示します。

表44-2 検索サービス・タスク・フロー

タスク・フロー

定義

検索

このタスク・フローでは、検索結果を絞り込んで保存するための豊富な検索機能を提供します。

検索 - 保存済検索

このタスク・フローを使用すると、保存済検索をアプリケーション内で実行するための簡単な起動パッドを作成できます。

検索プリファレンス

このタスク・フローを使用すると、ユーザーは検索するWebCenter Portalサービスを選択できます。

検索ツールバー

このタスク・フローを使用すると、ユーザーは簡単な検索条件を入力し、アプリケーションから検索を実行できます。検索結果はリンクとしてレンダリングされます。

44.2.3.2 検索サービスをページに追加する方法

検索ツールバー・タスク・フローでは、検索サービスをアプリケーションに追加するための最も簡単な方法を提供します。検索ツールバー・タスク・フローをFrameworkアプリケーションに追加するには:

1. 第3章「開発環境の準備」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。

注意:

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第68.3項「ADFセキュリティの構成」を参照してください。

2. 検索サービスを追加するページを開きます。

3. リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

4. 「検索ツールバー」タスク・フローをページにドラッグ・アンド・ドロップします。

5. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。
ADFライブラリの確認を求めるプロンプトが表示された場合は、「ライブラリの追加」をクリックします。

6. 検索ツールバーが表示されたページを実行します。
アプリケーション・ナビゲータでこのアプリケーションを右クリックし、「実行」を選択します。操作の完了に時間がかかる場合があります。

セキュリティの定義時に作成したユーザー名と資格証明を入力します。

注意:

検索サービスで結果を返すには、その他のWebCenter Portalサービスがアプリケーションに組み込まれていることが必要です。

44.2.3.3 検索サービス・タスク・フローのパラメータを変更する方法

検索サービス・タスク・フロー・パラメータを使用すると、タスク・フロー・インスタンスの外観と動作をカスタマイズできます。たとえば、特定のサービス、ドキュメントのタイプおよびスペースのみを含めるように検索結果を制限したり、検索ボックスのサイズを変更できます。

関連項目:

タスク・フロー・パラメータを使用して検索サービスをカスタマイズする方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のパラメータを設定して検索を絞り込む方法に関する項を参照してください

ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を確認して調整するには:

1. タスク・フローを含むページの下部にある「バインディング」タブ(「ソース」タブの隣)をクリックし、「タスク・フロー・バインディングの編集」ダイアログに移動します。

2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。図44-4に、「実行可能ファイル」セクションの検索タスク・フローの例を示します。

図44-4 ページ・データ・バインディング定義

「図44-4 ページ・データ・バインディング定義」の説明

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図44-5)で、フィールドをダブルクリックし、既存の値を変更するか新しい値を追加して、バインディング・パラメータ値を改訂します。

図44-5 検索タスク・フロー用の「タスク・フロー・バインディングの編集」ダイアログ

「図44-5 検索タスク・フロー用の「タスク・フロー・バインディングの編集」ダイアログ」の説明

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

表44-3に、検索サービス・タスク・フロー固有のプロパティを示します。

表44-3 検索サービス・タスク・フローのパラメータ

プロパティ

説明

タスク・フロー

customAttributes

検索結果を表示する際に表示するカスタム属性のリスト。

検索結果に1つ以上のカスタム属性を組み込むには、これを、カスタム属性名のカンマ区切りリストに設定します。オプションのラベル接頭辞には、関連付けられているカスタム属性名ではなく、表示するカスタム属性名を指定することもできます。label:nameの形式を使用します。

検索

検索ツールバー

hideRefiners

検索結果を表示する際に非表示にする絞込み条件のリスト。

1つ以上の絞込み条件を非表示にするには、これを、絞込み条件名のカンマ区切りリストに設定します(作成者、日付、スペース、コンテンツおよびタグから選択)。

検索

検索ツールバー

keywordsInputRendered

入力ボックスを表示または非表示にします。

入力ボックスを表示するにはtrue(デフォルト)に、非表示にするにはfalseに設定します。

検索

mimeType

検索を制限するMIMEタイプのリスト。

検索を特定のドキュメント・タイプに制限するには、これを、ドキュメントのMIMEタイプ(PDF、PPT、DOC)のカンマ区切りリストに設定します。

これは、ドキュメント・ツールにoracle.webcenter.doclibも設定できます。

注意: 検索をMicrosoft WordドキュメントとWebCenter Portalページに制限するには、このパラメータをapplication/mswordに設定し、serviceIdsパラメータをoracle.webcenter.doclib,oracle.webcenter.pageに設定します。

関連項目: 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の特定のドキュメント・タイプの検索に関する項を参照してください。

検索

検索ツールバー

searchScope

検索範囲を制限する一意のIDのリスト。検索をスペースのリストに制限するには、これを、スペースのGUIDのカンマ区切りリストに設定します。

例: #{spaceContext.currentSpaceGUID}またはs8bba98ff_4cbb_40b8_beee_296c916a23ed

検索

検索ツールバー

resourceScope

検索範囲を制限する一意のID。検索を特定のスペースに制限するには、これをスペースのGUIDに設定します。

例: #{spaceContext.currentSpaceGUID}またはs8bba98ff_4cbb_40b8_beee_296c916a23ed

注意: このパラメータは非推奨です。これは、後方互換性のためにのみ組み込まれています。

検索

searchBoxSize

検索ボックスのサイズを制限する値。

デフォルト値は42です。検索ボックスの長さを短くするには、より小さな値(30など)を入力します。これにより、検索タスク・フローの検索ボックスのサイズも変更されます。

検索ツールバー

serviceIds

検索結果を表示する際に組み込むサービスやエグゼキュータのIDのリスト。

コンテンツ・サーバーのピープル・プロファイルとドキュメントのみを表示するには、このパラメータをoracle.webcenter.peopleconnections.profile, oracle.webcenter.doclibに設定します。何も指定しない場合は、すべてのサービスが検索されます。

サービスIDのリストは、表F-7「サービスID」を参照してください。

検索

検索ツールバー

resourceId

検索キーワードまたは保存済検索GUIDを入力します。

注意: このパラメータは社内使用専用です。検索メイン・ビューをコード化する必要がないかぎり、この値は変更しないでください。この値を変更する場合は、resourceTypeも指定する必要があります。

検索

resourceType

resourceIdパラメータでキーワードや保存済検索GUIDを検索するかどうかを指定するマーカー。

注意: 自動的に設定されるこの値は、社内使用専用です。検索メイン・ビューをコード化する必要がないかぎり、これは変更しないでください。

検索

scope

検索範囲を制限する一意のID。検索を特定のスペースに制限するには、これをスペースのスコープ・オブジェクト、たとえば、#{serviceCtx.scope}に設定します。

注意: このパラメータは非推奨です。かわりに、searchScopeパラメータを使用します。(このパラメータに値を設定した場合は、searchScopeの値は無視されます。)

検索ツールバー

注意:

すべての保存済検索タスク・フローと検索プリファレンス・タスク・フローには、一意のプロパティはありません。

44.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で保護されたFrameworkアプリケーションの認証済ユーザーのみが検索を保存できます。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第68.3項「ADFセキュリティの構成」を参照してください。

44.3 検索サービスの詳細情報

この項では、このサービスで使用可能なオプション機能について説明します。次のサブセクションが含まれます:

- 第44.3.1項「検索タスク・フローの追加」

- 第44.3.2項「検索 - 保存済検索タスク・フローの追加」

- 第44.3.3項「検索プリファレンス・タスク・フローの追加」

- 第44.3.4項「Oracle SESアダプタを使用する検索の構成」

- 第44.3.5項「WebCenter Portalの検索アダプタを使用する検索の構成」

- 第44.3.6項「検索サービスJava APIの使用」

- 第44.3.7項「検索サービスREST APIの使用」

- 第44.3.8項「検索サービス・データ・コントロールの使用」

- 第44.3.9項「検索サービスのアダプタの構築」

- 第44.3.10項「WebCenter Portalの検索サービスAPIを使用しない検索UIのカスタマイズ」

- 第44.3.11項「検索サービスのトラブルシューティング」

注意:

検索サービスREST APIおよびデータ・コントロールは、Oracle SESを使用した検索でのみ使用可能です。これらは、WebCenterのオリジナルの検索アダプタを使用した検索ではサポートされていません。

44.3.1 検索タスク・フローの追加

検索タスク・フローをアプリケーションに追加するには、第44.2.3項「検索サービスの設計時の追加」の検索ツールバー・タスク・フローの手順に従うか、または検索タスク・フローをページにドラッグ・アンド・ドロップします。

検索ビューを含むページを実行するには:

1. アプリケーション・ナビゲータでページを右クリックし、「実行」を選択します。アプリケーションがADFセキュリティで保護されていれば、ログイン・ページが表示されます。操作の完了に時間がかかる場合があります。

2. ADFセキュリティを構成した場合は、ユーザー名とパスワードを入力し、「発行」をクリックします。ます。

3. フィールドに検索条件を入力し、「検索」アイコンをクリックします。アプリケーションに検索サービス自体のデータ以外があまり移入されていない場合は、結果はほとんど表示されません。

44.3.2 検索 - 保存済検索タスク・フローの追加

検索 - 保存済検索タスク・フローを追加して、アプリケーション内で保存済検索を実行するための簡単な起動パッドを提供できます。このタスク・フローをFrameworkアプリケーションに追加するには、第44.2.3項「検索サービスの設計時の追加」の検索ツールバー・タスク・フローの手順に従うか、検索 - 保存済検索タスク・フローをページにドラッグ・アンド・ドロップします。

このタスク・フローは、クリックされると保存済検索を実行するリンクをレンダリングします。

44.3.3 検索プリファレンス・タスク・フローの追加

検索プリファレンス・タスク・フローを使用すると、ユーザーはどのWebCenter Portalサービスを検索するのかを制御できます。デフォルトでは、すべての有効なサービスが検索対象として選択されます。ユーザーは、検索結果を表示しないサービスを無効化できます。また、検索結果に表示するサービスの順序を選択することもできます。たとえば、ドキュメント・ツールの検索結果が他のサービスの検索結果より遥かに有用だと気付く場合があります。

検索プリファレンス・タスク・フローをアプリケーションに追加するには、第44.2.3項「検索サービスの設計時の追加」の検索ツールバー・タスク・フローの手順に従うか、または検索プリファレンス・タスク・フローをページにドラッグ・アンド・ドロップします。

44.3.4 Oracle SESアダプタを使用する検索の構成

WebCenter Portal: Frameworkアプリケーションは、デフォルトの検索アダプタとしてOracle Secure Enterprise Search (SES)を自動的に設定しますが、Oracle SES、Oracle WebCenter Content: Content ServerおよびOracle WebCenter Portalのディスカッション・サーバーに追加の構成が必要です。Oracle SESアダプタを使用する検索を設定する手順の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の検索サービスの管理に関する項を参照してください。

すべての構成手順を完了したら、WebCenter Portalの検索でOracle SESの結果が含まれていることを検証します。

1. アプリケーション・ナビゲータで、検索ツールバーを使用して作成したページを右クリックし、「実行」をクリックします。
アプリケーションがADFセキュリティで保護されていれば、ログイン・ページが表示されます。操作の完了に時間がかかる場合があります。

2. セキュリティの定義時に作成したユーザー名と資格証明を入力します。

3. 「送信」をクリックします。
ページがロードされると、検索ツールバーが表示されます。

図44-6に、Oracle SESがクロールする前の、検索文字列webcenterのサンプルの結果ページを示します。

図44-6 検索結果

「図44-6 検索結果」の説明

図44-7に、Oracle SESが構成されてクロールした後の、サンプルの結果ページを示します。

図44-7 グローバル検索結果

関連項目:

Oracle Fusion Middlewareドキュメント・ライブラリのOracle SESのドキュメント(WebCenter Portalの製品分野に存在)

44.3.5 WebCenter Portalの検索アダプタを使用する検索の構成

Oracle SESで手動で検索を上書きしたり、WebCenter Portalの元のライブ検索アダプタを使用してFrameworkアプリケーション検索を実行したりできます。WebCenter Portalの検索アダプタでは、ドキュメント、タグ、ピープル、ページなど、有効かつ検索可能なすべてのサービスが対象になります。

WebCenter Portalの検索アダプタを使用して検索できるようにするには、adf-config.xmlファイルを編集して、crawl-propertiesのすべての有効な属性をfalseにするか(例44-2)、またはcrawl-properties全体をコメント・アウトします(例44-3)。

例44-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>

例44-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>

44.3.6 検索サービスJava APIの使用

カスタム・コンポーネントでは、検索サービスAPIを実装してそのコンテンツをWebCenter Portalの検索に公開できます。

詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

44.3.7 検索サービスREST APIの使用

WebCenter Portalは、検索サービスをサポートするためのREST APIを提供しています。検索サービスREST APIを使用して検索を読取り(取得)します。検索のキーワードと範囲を指定できます。たとえば、iPhoneではすべてのスペース、ドキュメントおよびWikiページ内の「smith」を検索できます。また、APIによって、検索サービスの上にカスタマイズされた検索ユーザー・インタフェースを作成できます。

この項では、検索サービスに関連したREST APIについて説明します。次のサブセクションが含まれます:

- 第44.3.7.1項「検索エントリ・ポイント」

- 第44.3.7.2項「検索リソース・タイプの分類」

- 第44.3.7.3項「セキュリティに関する考慮事項」

- 第44.3.7.4項「検索リソース・タイプ」

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

44.3.7.1 検索エントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。検索サービスのエントリ・ポイントを検索するには、次のresourceTypeを持つリンク要素を検索します。

urn:oracle:webcenter:search

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、検索サービスを操作します。

リソース索引の詳細は、第53.5.1項「リソース索引」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

44.3.7.2 検索リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」の該当の項を参照してください。

検索サービスの分類は次のとおりです。

urn:oracle:webcenter:search
urn:oracle:webcenter:search:results

サービス・エントリ・ポイントの他、URLテンプレートにより、クライアントは、問合せパラメータを渡してリクエストをカスタマイズしたり戻されたデータのフォームを制御できます。

検索リソース内のコレクション・リソースは、ページ区切り(startIndexおよびitemsPerPage)をサポートします。その他の問合せパラメータ(searchとprojection)はサポートされていません。

44.3.7.3 セキュリティ上の考慮事項

認証は、検索REST APIのメソッドを使用する前に必要です。

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

44.3.7.4 リソース・タイプの検索

この項では、各リソース・タイプについて説明します。次のサブセクションが含まれます:

- 第44.3.7.4.1項「urn:oracle:webcenter:search:results」

44.3.7.4.1 urn:oracle:webcenter:search:results

このリソース・タイプを使用して、キーワードと属性固有の条件を含む問合せの読取り(GET)に使用するURIを識別します。

リクエストはURLによって表され、レスポンスは検索結果のリストで、それぞれエンド・ユーザーがドリル・ダウンするアイテムを選択し、使用可能な場合は独自のRESTサービスへのリンクをクロスするうえで役立つメタデータを備えています。独自のRESTサービスが使用できない場合は、HREFリンクが提供されます。

レスポンスXMLでは、標準のURLパラメータと、前および次のリンクを使用してページを区切ることができます。(問合せが移入された)一般的なテンプレートに付属しているこれらのリンクにより、使用アプリケーションは固有のカスタム・ページ区切りを実行できます。

resultsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
search

resourceindex
spaces
spaces:resourceindex
spaces:search

resultsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - ボディ: なし、パラメータ: serviceId、q、scopeGuid、refiners、startIndex (ページ区切り)、itemsPerPage (ページ区切り)

- レスポンス - ボディ: 検索結果および絞込み条件(refiners=trueの場合)

ここで:

- serviceId={serviceId1}[,{serviceId2}...]
オプション: これにより、検索が、oracle.webcenter.doclibやoracle.webcenter.pageなどの1つ以上のWebCenter Portalサービスに絞り込まれます。たとえば、これをoracle.webcenter.doclibに設定すると、ドキュメントのみが検索されます。省略すると、この検索はすべてのサービスについて実行されます。

関連項目:

サービスIDのリストは、表F-7「サービスID」を参照してください。

- q={queryString}
検索は、次の形式を使用して指定できます

[[field1:[operand]][:]value1[;field2:operand:value2]]

ここでは、複数の句が暗黙のANDによって結合され、セミコロン(;)によって構文的に区切られます。大かっこ[]は、オプションの値を示します。それぞれの句は、次のタイプのいずれかになります。

- keywords: コロン(:)のセパレータを使用しない単純な文字列

- attribute1:value1: attribute1はvalue1に等しいということを意味する句のショートカット

- attribute1:operand1:value1: attribute1とvalue1との間のブール条件を取得する句

検索属性には次が含まれますが、任意の属性名にできます。

- title - 項目の名前またはタイトル

- description - 項目の説明

- creator - 項目の作成者またはコントリビュータ

- date - 項目が最後に変更された日付

- tags - 項目に含まれている可能性があるタグ・ワード(ページに適用可能)

属性は検索結果で返すことができます。この場合、data=field1[,field2]の形式になります。

有効なオペランド:

- equals - 文字列および数値

- contains - 文字列

- gt (より大きい) - 数値

- gte (より大きいか等しい) - 数値

- lt (より小さい) - 数値

- lte (より小さいか等しい) - 数値

- scopeGuid={...}
オプション: 有効範囲に関連付けられているGUID。

- refiners={true|false}
オプション: 絞込み条件をフェッチするかどうか。省略した場合、デフォルト値はfalseです。

例44-4 RESTコマンドの検索

http://examplehost:8888/rest/api/searchresults?q=document&serviceId=oracle.webcenter.doclib,oracle.webcenter.page&utoken={utoken}

http://examplehost:8888/rest/api/searchresults?q={keywords};dDocName:contains:handbook&data=dDocName,dOriginalName

詳細は、第53.5.2.5項「テンプレート」を参照してください。

resultsの書込み可能要素

表44-4に、このリソースに書込み可能な要素をリストします。

表44-4 resultsの書込み可能要素

要素

タイプ

必須

制約

説明

author

String

1文字以上の文字

問合せ作成者の名前

resourceId

serviceId

title

description

String

いいえ

1文字以上の文字

問合せの説明

lastModifiedDate

size

resultsからリンクされるリソース・タイプ

表44-5に、クライアントがこのリソースにリンクできるリソース・タイプを示します。

表44-5 searchに関連するリソース・タイプ

rel

リソース・タイプ

self

44.3.8 検索サービス・データ・コントロールの使用

検索サービス・データ・コントロールを使用して、Frameworkアプリケーションまたはカスタム・タスク・フローで動作するカスタマイズされた検索ユーザー・インタフェースを作成できます。このタスク・フローをADFライブラリにデプロイすると、タスク・フローをポータブルに利用できるようになります。たとえば、それをWebCenter Portal: Spacesアプリケーションのリソース・カタログに追加して、サイト・テンプレートを作成できます。

44.3.8.1 検索データ・コントロールのメソッド、属性およびクラス

検索データ・コントロールにはsearchSesメソッドが含まれています。表44-6では、検索絞込み条件を設定し、検索の有効範囲を制限するためのパラメータについて説明します。

表44-6 searchSes入力パラメータ

パラメータ

必須かどうか

タイプ

説明

scopeGuid

いいえ

String

結果をスペースでフィルタするためのGUID値。

serviceId

いいえ

String

アイテムのサービスID。たとえばoracle.webcenter.doclibはドキュメントのみを検索します。省略すると、すべてのサービスを対象に検索します。

keywords

はい

String

検索文字列。

predicates

いいえ

リスト

条件のコレクション。

fetchRefiners

いいえ

Boolean

絞込み条件をフェッチするかどうか。省略した場合、デフォルト値はfalseです。

startIndex

はい

整数

結果セットに含める、最初に一致する結果のインデックスを指定します(0-n ... 0から始まる)。これはページ区切りに使用されます。

itemsPerPage

はい

整数

表示する結果数。

searchSesメソッドは次のコレクションを返します。

- SearchServiceDCRowsオブジェクトのコレクション

- SearchServiceDCRefinerオブジェクトのコレクション

44.3.8.1.1 SearchServiceDCRows

- author

- comments

- createDate

- description

- iconPath

- language

- largeIconPath

- lastModifiedDate

- resourceId

- scopeGuid

- serviceId

- size

- tagWords

- title

- type

- urlSearchServiceDCRefiner

44.3.8.1.2 SearchServiceDCRefiner

element

44.3.8.1.3 SearchServiceDCRefinement

- keywords

- scopeGuid

- serviceId

- 条件のコレクション

44.3.8.2 検索データ・コントロールの統合

検索データ・コントロールを使用するには:

1. JDeveloperで、Oracle SES接続を備えたFrameworkアプリケーションを作成します。接続が使用可能になると、「データ・コントロール」パレットに検索データ・コントロールが表示されます。

2. SearchServiceDCからsearchSesメソッドをドラッグ・アンド・ドロップします。

3. 「ADFパラメータ・フォーム」を選択し、「フォーム・フィールドの編集」ダイアログを開きます。「OK」をクリックします。

4. SearchServiceDCResult戻りオブジェクト・タイプからフォーム上に行アクセッサをドラッグし、「表」 - 「ADF読取り専用表」を選択します。「OK」をクリックします。

5. ページを実行し、適切な値を入力します。例:

- keywords: 任意の検索文字列

- startIndex: 0

- itemsPerPage: 10

アプリケーションへのデータ・コントロールの追加の詳細は、第7.1.2項「WebCenter PortalのAPIの理解」を参照してください。

44.3.9 検索サービスのアダプタの構築

検索アダプタを使用してその他のソースを検索結果に追加できます。これらの検索アダプタは、WebCenter Portalフレームワークによって自動的に検出され、アプリケーションで検索結果を生成する際に統合されます。その後、アプリケーションでカスタム・コンポーネントを検索サービスに公開すると、このコンポーネントはフェデレーテッド検索に組み込まれます。

この項では、検索アダプタを使用して、WebCenter Portalの検索を拡張する方法について説明します。次のサブセクションが含まれます:

- 第44.3.9.1項「検索ソースの追加方法」

- 第44.3.9.2項「カスタム・アダプタの登録方法」

- 第44.3.9.3項「検索アダプタの属性」

- 第44.3.9.4項「実行時の処理」

44.3.9.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 ...

注意:

Frameworkアプリケーションでは、Oracle Secure Enterprise Searchがデフォルトの検索プラットフォームとして設定されています。かわりにこのサンプル・コードをWebCenter Portalのライブ検索アダプタで動作させるには、adf-config.xmlのcrawl-propertiesを編集する必要があります。詳細は、第44.3.5項「WebCenter Portalの検索アダプタを使用する検索の構成」を参照してください。

類似の問合せマネージャとともに新しい検索ソースを追加するには:

1. Oracle JDeveloperで、検索ソースを追加するアプリケーションを開きます。

2. WebCenter共通ライブラリがプロジェクトに含まれていることを確認します。

1. アプリケーション・ナビゲータで、プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択し、「ライブラリとクラスパス」を選択します。

2. 図44-8に示すように、「WebCenter共通」ライブラリが含まれていない場合は、「ライブラリの追加」をクリックしてこれを選択します。

図44-8 WebCenter共通ライブラリ

「図44-8 WebCenter共通ライブラリ」の説明

3. 「OK」をクリックします。

3. SampleQueryManager.javaと呼ばれるクラスを作成します(例44-5)。

例44-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という名前のクラスを作成します(例44-6)。

例44-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_CREATOR;
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という名前のクラスを作成します(例44-7)。

例44-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という名前のクラスを作成します(例44-8)。

例44-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_CREATOR;
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 creator, 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_CREATOR, creator);
// 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();
}
}

44.3.9.2 カスタム・アダプタの登録方法

問合せマネージャを検索サービスに登録するには、service-definition.xmlファイルを編集する必要があります。SampleQueryManager行は、カスタム・アダプタの問合せマネージャの実装を検索サービスに対して公開するため、カスタム・アダプタはすべての検索ユーザー・インタフェースに含まれるようになります。

エントリは、例44-9のようになります。

例44-9 service-definition.xml内のSampleQueryManagerエントリ

<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のリソース・アクション処理フレームワーク)の詳細は、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。

44.3.9.3 検索アダプタの属性

この項では、サービスの検索に使用可能な属性について説明します。次のサブセクションが含まれます:

- 第44.3.9.3.1項「検索可能な属性」

- 第44.3.9.3.2項「キーワード」

- 第44.3.9.3.3項「日付の条件」

- 第44.3.9.3.4項「複雑な日付の条件」

- 第44.3.9.3.5項「ユーザー条件」

- 第44.3.9.3.6項「複雑なユーザー条件」

- 第44.3.9.3.7項「アクセス」

- 第44.3.9.3.8項「検索可能な属性」

44.3.9.3.1 検索可能な属性

WebCenter Portalの検索ユーザー・インタフェースでは、キーワード、日付およびユーザーの3つのフィールドに基づいて検索を公開します。各サービスは、その固有の検索実装において、これらのフィールドがその機能を最大限発揮できるようにします。少なくとも、キーワード・フィールドはサポートしています。独自の検索アダプタを定義する場合は、第44.3.9.3.8項「選択可能属性」で説明しているように、これらのフィールドを使用してアダプタの機能を最大限発揮できるようにする必要があります。

44.3.9.3.2 キーワード

デフォルトでは、キーワード・フィールドはoracle.webcenter.search.TextPredicateに含まれています。このフィールドには、複数の単語を、複数の単語を解釈する方法を決定するサービスとともに指定できます。コールがサービスに届く前に検索サービスでトークン化を実行することはありませんが、次にそのガイドラインをいくつか示します。

- 複数のトークンが引用符で囲まれている場合は、1つの単語として解釈されます。

- OR演算子が明示的に設定されていないかぎり、キーワード・フィールド内の単語間のデフォルトの結合はANDであると見なされます。

44.3.9.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タイプである必要があります。

44.3.9.3.4 複雑な日付の条件

日付間にはBETWEEN句を使用できます。複雑な日付の条件では、単純なAttributePredicateではなく、1つのGREATER_THAN AttributePredicateと1つのLESS_THAN AttributePredicateに加え、AND論理積演算子を含むComplexPredicateを使用します。ComplexPredicateは、AND演算子を残りのフィールド(キーワードおよびユーザー・フィールド)に適用する必要があります。

このケースとデフォルトのケースを区別するには、サービス作成者は、日付条件の条件のタイプをチェックする必要があります。AttributePredicateの場合は、デフォルトのケースです。ComplexPredicateの場合は、特殊なケースです。

44.3.9.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タイプである必要があります。

44.3.9.3.6 複雑なユーザー条件

サービス作成者は、ユーザー条件の条件のタイプをチェックする必要があります。AttributePredicateがデフォルトのケースです。

44.3.9.3.7 アクセス

検索サービス(コーラー)では、問合せのgetPredicate()メソッドが、キーワードを保持するoracle.webcenter.search.TextPredicate、日付条件を保持するoracle.webcenter.search.ComplexPredicate、およびユーザー条件を保持するoracle.webcenter.search.AttributePredicateを連結するoracle.webcenter.search.ComplexPredicateを返す可能性があることを想定しています。

44.3.9.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_CREATORとAttributeConstants.WPSAPI_MODIFIEDです。作成者のタイプは、java.lang.Stringです。

- アイコン
指定されている場合は、返されるリソースごとに、検索サービスのユーザー・インタフェースにアイコン列を表示できます。アイコン列にはQNameAttributeConstants.WPSAPI_ICON_PATHが指定されており、また、この列はクラス・パスでアクセス可能なアイコン・ファイルへの有効なパスに対応しています。アイコン・パスのタイプは、java.lang.Stringです。

- サイズ
指定されている場合は、返されるリソースごとに、検索サービスのユーザー・インタフェースにサイズ列を表示できます。サイズ列にはQNameAttributeConstants.DCMI_EXTENTが含まれ、また、この列は検出されたリソースのサイズに対応しています。サイズのタイプは、java.lang.Numberです。

44.3.9.4 実行時の処理

メイン・ビューまたはツールバーから検索を行うと、新たな検索ソースがシームレスに統合されます。テスト用に、新たに追加した検索ソースで結果を生成する条件を入力します。

WebCenter Portalの検索サービスは、リソース・アクション処理フレームワークを使用してリソース・ビューアを起動します。リソース・ビューアを登録し、検索によりカスタム・コンポーネントを検出できるようにする方法の詳細は、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。

44.3.10 WebCenter Portalの検索サービスAPIを使用しない検索UIのカスタマイズ

WebCenter Portalの検索サービスAPIを使わずFrameworkアプリケーション内でカスタム検索ユーザー・インタフェースを開発できますが、検索機能を実行するために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ファイルを更新し、使用するリソース・アクション処理クラスを指定します。

例44-10に、PopUpResourceActionViewHandlerを使用して、検索結果をクリックしたときにポップアップ・ウィンドウにリソースを表示する方法を示します。

例44-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>

例44-11に、NavigationResourceActionHandlerを使用して、検索結果をクリックしたときにリソースのナビゲーション・ノードにリソースを表示する方法を示します。

例44-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>

44.3.11 検索サービスのトラブルシューティング

この項では、検索サービスで発生する代表的な問題と解決方法について説明します。

問題

各サービスの問合せには設定タイムアウトがあります。特定のサービスから割当て時間内に検索結果が返されない場合は、タイムアウトになります。お知らせサービスやディスカッション・サービスはタイムアウトの影響を受けます。(WebCenter Portal: Spacesでは、ページとスペースに、検索実行時からのタイムアウトを設定できます。)

解決方法

設計時にパフォーマンスを改善するために、timeoutMsの値(ミリ秒単位)を増やし、adf-config.xml内でTimeoutMsを準備できます。次は、ADF META-INFフォルダの「アプリケーション・リソース」パネルにあるadf-config.xml関連のフラグメントです。

<execution-properties timeoutMs="3000"prepare TimeoutMs="1000"/>

実行時には、WLSTまたはFusion Middleware Controlを使用してタイムアウトを構成できます。

45 アクティビティ・グラフ・サービスの統合

この章では、設計時にWebCenter Portal: Frameworkアプリケーションにアクティビティ・グラフ・サービスを統合する方法について説明します。

この章には次の項が含まれます:

- 第45.1項「アクティビティ・グラフ・サービスの概要」

- 第45.2項「アクティビティ・グラフ・サービスの基本構成」

- 第45.3項「アクティビティ・グラフ・サービスの詳細情報」

- 第45.4項「アクティビティ・グラフ・サービスの拡張」

- 第45.5項「アクティビティ・グラフ・サービスのトラブルシューティング」

アクティビティ・グラフ・サービスの管理方法および使用方法の詳細は、次のドキュメントを参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアクティビティ・グラフ・サービスの管理に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のアクティビティ・グラフ・サービスでの作業に関する項

45.1 アクティビティ・グラフ・サービスの概要

今日のユーザーは前例のない速度でコンテンツを提供しています。このことを念頭に置くと、FrameworkアプリケーションなどのEnterprise 2.0製品にシームレスに統合された、より効率的な情報取得サービスが必要になっています。アクティビティ・グラフ・サービスでは、集約されたインテリジェント機能を活用することで、検索アプリケーションおよびソーシャル・アプリケーション用のソリューションを提供します。

この項では、アクティビティ・グラフ・サービスの概要、タスク・フロー、メリットおよび基礎となるアーキテクチャについて説明します。次のサブセクションが含まれます:

- 第45.1.1項「アクティビティ・グラフ・サービスの理解」

- 第45.1.2項「アクティビティ・グラフ・サービスの要件」

- 第45.1.3項「実行時の処理」

45.1.1 アクティビティ・グラフ・サービスの理解

アクティビティ・グラフ・サービスでは、既存のコネクションやアプリケーション内のオブジェクトへの共通のやり取りに基づいて、ユーザーが関心を寄せている可能性のある人を提案します。また、現在ユーザーが表示しているスペースまたはアイテムでの類似する操作に基づいて、ユーザーが興味を持つ可能性があるスペースやコンテンツも示されます。

アクティビティ・グラフ・サービスでは、アクティビティ・グラフ・エンジンによって収集および分析されたデータに基づいて、これらの提案が提示されます。アクティビティ・グラフ・エンジンは、エンタープライズ・アプリケーションによって収集されるアクションの中央リポジトリを提供します。数学のグラフについて考えると、アプリケーション・ユーザーと彼らがやり取りするエンタープライズ・コンテンツがノードであり、ユーザー間およびユーザーとコンテンツ間のアクションが有向エッジに相当します(図45-1)。

図45-1 アクティビティ・グラフ

「図45-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)

アクティビティ・グラフ・エンジンを拡張して他のアプリケーションに統合する場合は、これらのアプリケーションのオブジェクトに対応するカスタム・ノード・クラスを作成できます。詳細は、第45.4.1項「カスタム・ノード・クラスの定義」を参照してください。

アクション

アクションは特定のタイプのイベントです。それには、ソースとターゲットがあります。たとえば、Montyというユーザーがドキュメントを見ている場合は、Montyによるviewアクションがソースとなり、ドキュメントがターゲットとなります。ユーザーとアイテム間のその他のアクションには、create、likeおよびtagがあります。たとえば、2人のユーザーが互いにconnectされている場合は、アクションを2人のユーザー間で実行できます。

表45-1に、WebCenter Portal用に定義されたデフォルト・アクションを示します。

表45-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がドキュメントをviewすると)、そのアクションはWebCenter Portal分析のコンポーネントであるイベント・コレクタによって収集され、アクティビティ・データベース(図45-2)のイベント表に格納されます。

図45-2 WebCenter Portal分析によるデータ収集

「図45-2 WebCenter Portal分析によるデータ収集」の説明

アクティビティ・データの収集プロセスが開始されると、分析アクティビティ・プロバイダによって分析イベント表からアクションが読み取られた後、登録済のマッピング・セットが使用されてアクティビティが生成されます(図45-3)。アクティビティとは、1回発生したアクションのことで、集計されたアクションの発生回数であるリレーションの判別に使用されます(リレーション表に格納される)。たとえば、Montyがこの特定のドキュメントを5回表示したという事実はリレーションです。リレーション表の中の情報は、推奨と検索ランクの決定に使用されます。

図45-3 アクティビティ・グラフ・エンジンによって収集されたデータ

「図45-3 アクティビティ・グラフ・エンジンによって収集されたデータ」の説明

アクティビティ・グラフ・エンジンを他のアプリケーションに統合する場合は、これらのアプリケーションにおけるユーザーの実行アクションに対応するカスタム・アクションを作成できます。詳細は、第45.4.2項「カスタム・アクションの定義」を参照してください。

類似度計算

アクティビティ・グラフ問合せAPIは、アクティビティ・グラフ・サービス・タスク・フローによって使用されるJava APIで、レシピを使用して関連表で推奨を問い合せます(図45-4)。レシピとは、類似度計算の重み付けされたリストのことです。類似度計算では、特定の条件下で2つのオブジェクトがどの程度類似しているかを指定する類似度スコア(ゼロから1までの数値)が提供されます。それぞれの計算の重み付けによって、その計算が推奨の総合スコアに与える影響が変化します。推奨は、推奨スコアの合計によって順序付けされます。

図45-4 アクティビティ・グラフ・サービスによる推奨の計算

「図45-4 アクティビティ・グラフ・サービスによる推奨の計算」の説明

表45-2に、アクティビティ・グラフ・サービス・タスク・フローによって使用される類似度計算を示します(タスク・フローについては、第45.2.3.1項「アクティビティ・グラフ・サービス・タスク・フロー」を参照してください)。

表45-2 アクティビティ・グラフ・サービスの類似度計算

URN

適用対象

説明

タスク・フローでの使用

item-edit

ドキュメント

Wikiページ

ブログ

トピック

現在のアイテムを編集したユーザーが推奨アイテムも編集しています

類似アイテム

item-like

ドキュメント

Wikiページ

ブログ

トピック

現在のアイテムを気に入ったユーザーが推奨アイテムも気に入っています

類似アイテム

item-comment

ドキュメント

Wikiページ

ブログ

トピック

現在のアイテムについてコメントしたユーザーが推奨アイテムについてもコメントしています

類似アイテム

item-tag

ドキュメント

Wikiページ

ブログ

トピック

現在のアイテムにタグ付けしたユーザーが推奨アイテムにもタグ付けしています

item-all

ドキュメント

Wikiページ

ブログ

トピック

現在のアイテムとなんらかの方法で(表示など)やり取りしたユーザーが、推奨アイテムともなんらかの方法でやり取りしています

類似アイテム

user-connect

ユーザー

現在のユーザーが推奨ユーザーと複数のコネクションを共有しています

推奨コネクション

user-edit

ユーザー

現在のユーザーが編集したアイテムの一部は、推奨ユーザーも編集しています

推奨コネクション

user-like

ユーザー

現在のユーザーが気に入ったアイテムの一部は、推奨ユーザーも気に入っています

推奨コネクション

user-comment

ユーザー

現在のユーザーがコメントしたアイテムの一部は、推奨ユーザーもコメントしています

推奨コネクション

user-tag

ユーザー

現在のユーザーがタグ付けしたアイテムの一部は、推奨ユーザーもタグ付けしています

推奨コネクション

user-all

ユーザー

推奨ユーザーがやり取りしたアイテムの一部と、表示を含めなんらかの方法でやり取りした現在のユーザー

推奨コネクション

これらの類似度計算を編集して、重み付けを変更できます。アクティビティ・グラフ・エンジンを他のアプリケーションに統合する場合は、追加の類似度計算を作成できます。詳細は、第45.4.3項「カスタム類似度計算の定義」を参照してください。

問合せ結果ポスト・プロセッサ(QRPP)

特定のオブジェクトの最初の推奨リストが生成された後、結果をフィルタし、ユーザーにとってより適した有用なものにします。これは、問合せ結果ポスト・プロセッサ(QRPP)を使用して実現されます。QRPPは、現在の推奨結果のリストを使用し、出力として変更されたリストを返します。QRPPは、たとえば、現在のユーザーに閲覧が許可されていないオブジェクトの推奨を削除することで推奨をフィルタ除去したり、結果のメタデータを追加または変更したりすることがあります。

WebCenter Portalには、次の3つのQRPPが用意されています(表記されている順序で実行される)。

- WebCenter PortalセキュリティQRPP - リソース認可プロバイダをコールすることにより、現在のユーザーが表示権限を持っていないオブジェクトに対する推奨をフィルタ処理で除外します。リソース認可プロバイダは、検索サービスによる表示認可で使用されるのと同じWebCenter Portalコンポーネントです。詳細は、第7.3.1項「リソース・アクション処理フレームワークの概要」を参照してください。

- 分析メタデータQRPP - 分析表の各推奨オブジェクトについて、追加のメタデータ(説明やアイコンURLなど)を取得します。

- WebCenter Portal URL QRPP - リソース・アクション・ハンドラをコールすることにより、各推奨オブジェクトのURLを取得します。リソース・アクション・ハンドラは、検索サービスで使用されるのと同じWebCenter Portalコンポーネントです。

この結果にさらにフィルタ処理を加えたり、アクティビティ・グラフ・エンジンを他のアプリケーションに統合するために独自のQRPPを作成できます。詳細は、第45.4.6項「カスタムQRPPの登録」を参照してください。

アクティビティ・グラフ・サービス・タスク・フロー

ユーザーに対する推奨の提示は、アクティビティ・グラフ・サービス・タスク・フローを介して行われます。アクティビティ・グラフ・サービスには、次のタスク・フローがあります。

- 推奨コネクション - ユーザーの現在のコネクションやアプリケーション内のオブジェクトへの共通のやり取りに基づいて、現在のユーザーがコネクションを望む可能性のあるユーザーを推奨します。

- 類似アイテム - 現在のアイテムと同様の方法でやり取りしたことのあるアイテムを提案します。

注意:

類似スペース・タスク・フローは、WebCenter Portal Spacesアプリケーションでのみ使用可能です。ユーザーが現在のスペースと同様の方法でやり取りするスペースを提案します。

詳細は、第45.2.3.1項「アクティビティ・グラフ・サービス・タスク・フロー」を参照してください。

45.1.2 アクティビティ・グラフ・サービスの要件

アクティビティ・グラフ・サービスを使用するには、アクティビティ・グラフ・エンジンがインストールおよび構成されている必要があります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』を参照してください。

また、アプリケーションでWebCenter Portalスキーマおよびアクティビティ・データベースへの接続を作成する必要があります。詳細は、第7.2.2項「データベース接続の設定」を参照してください。

分析イベント・コレクタに使用イベントを送信するように、アプリケーションが構成されている必要があります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアプリケーション用の分析コレクタの登録に関する項を参照してください。

アクティビティ・グラフ・サービスで推奨を行うには、まず、アクティビティ・グラフ・エンジンを最低1回は実行して、データ収集と類似度スコアの計算を行っておく必要があります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアクティビティ・グラフ・サービス用のデータ準備に関する項を参照してください。

類似アイテム・タスク・フローと推奨データ・コントロールで提案されるアイテムは、アプリケーションで使用可能なツールとサービスによって異なります。たとえば、ドキュメント・サービスが使用可能な場合は、ドキュメントのみが推奨されます。アプリケーションでサービスを使用可能にする方法については、そのサービスに関する該当の章を参照してください。また、そのアイテムを所有するサービスのリソース認可プロバイダでフィルタ処理が行われることによって、アイテムが推奨から除外されることもあります。

45.1.3 実行時の処理

実行時には、アクティビティ・グラフ・サービス・タスク・フローで次のようなコンテキストが提供されます。

- 推奨コネクション・タスク・フローの場合、コンテキストは現在のユーザーになります。

- 類似アイテム・タスク・フローの場合、コンテキストは、タスク・フロー入力パラメータまたはADF UIイベントを通して渡されるWebCenter Portalリソースになります。

その後、タスク・フローは、アクティビティ・グラフのQuery APIを介して(タスク・フロー・パラメータで指定されているレシピを使用する)アクティビティ・グラフ・データベースの推奨の問合せを行います。Query APIによって返された推奨リストは、QRPPでフィルタ処理してからタスク・フローで表示することもできます。

実行時のサービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のアクティビティ・グラフ・サービスでの作業に関する項を参照してください。

45.2 アクティビティ・グラフ・サービスの基本構成

この項では、アクティビティ・グラフ・サービスをアプリケーションに追加するための必要な手順について説明します。次のサブセクションが含まれます:

- 第45.2.1項「アクティビティ・グラフ・サービスの構成ロードマップ」

- 第45.2.2項「アクティビティ・グラフ・サービスの接続設定」

- 第45.2.3項「設計時におけるアクティビティ・グラフ・サービスの追加」

45.2.1 アクティビティ・グラフ・サービスの構成ロードマップ

この項のフローチャート(図45-5)と表(表45-3)は、Frameworkアプリケーション内でアクティビティ・グラフ・サービスを動作させるために必要な前提条件とタスクの概要を示しています。

図45-5 WebCenter Portal: Frameworkアプリケーションに対するアクティビティ・グラフ・サービスの構成

「図45-5 WebCenter Portal: Frameworkアプリケーションに対するアクティビティ・グラフ・サービスの構成」の説明

表45-3 WebCenter 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 アクティビティ・グラフ・タスク・フローで、推奨(たとえば、「プロファイル」ページの推奨コネクション・タスク・フロー)を表示する(エンド・ユーザー)

45.2.2 アクティビティ・グラフ・サービスの接続設定

アクティビティ・グラフ・サービスには、次の接続が必要です。

- WebCenter Portalスキーマ - この接続は、WebCenter Portalのリソース認可プロバイダとリソース・アクション・ハンドラの問合せ中に、WebCenter PortalセキュリティおよびWebCenter Portal URLのQRPPによって使用されます。この接続の作成方法については、第7.2.2項「データベース接続の設定」を参照してください。

- アクティビティ・スキーマ - この接続は、推奨の問合せおよびその結果のメタデータの取得に使用されます。これは、分析イベント・コレクタおよびアクティビティ・グラフ・エンジンが使用する接続と同じものです。既存の接続が存在する場合、その接続が使用されます。既存の接続が存在しない場合は、新しい接続を作成する必要があります。この接続の作成方法については、第7.2.2項「データベース接続の設定」を参照してください。

- 分析イベント・コレクタ - この接続は、分析イベント・コレクタに使用イベントを送信するために使用されます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアプリケーション用の分析コレクタの登録に関する項を参照してください。

さらに、類似アイテム・タスク・フローと推奨データ・コントロールで提案されるアイテムは、アプリケーションで使用可能なツールとサービスによって異なります。たとえば、ドキュメントは、ドキュメント・ツールが有効な場合のみお薦めされます。

- ドキュメント、Wikiおよびブログを表示するにはコンテンツ・リポジトリへの接続が必要です。

- ディスカッションを表示するには、ディスカッション・サーバーへの接続が必要です。

注意:

JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager 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.4項「アクティビティ・グラフ・サービス・タスク・フローおよびタスク・フロー・パラメータ」

45.2.3.1 アクティビティ・グラフ・サービス・タスク・フロー

この項では、アクティビティ・グラフ・サービスで使用可能なタスク・フローについて説明します。

表45-4に、アクティビティ・グラフ・サービスによって提供されるタスク・フローを示します。

表45-4 アクティビティ・グラフ・サービス・タスク・フロー

タスク・フロー

説明

推奨コネクション

このタスク・フローでは、現在のユーザーに類似しているとアクティビティ・グラフ・エンジンの計算によって判断されたユーザーを表示して、そのユーザーとのコネクションを持つことができます。

詳細は、第45.2.3.1.1項「推奨コネクション・タスク・フロー」を参照してください。

類似アイテム

このタスク・フローでは、現在のユーザーが興味を持つ可能性があるとアクティビティ・グラフ・エンジンの計算によって判断されたWebCenter Portalアイテムを表示して、そのアイテムとやり取りできます。

詳細は、第45.2.3.1.2項「類似アイテム・タスク・フロー」を参照してください。

注意:

類似スペース・タスク・フローは、WebCenter Portal Spacesアプリケーションでのみ使用可能です。ユーザーが現在のスペースと同様の方法でやり取りするスペースを提案します。

45.2.3.1.1 推奨コネクション・タスク・フロー

推奨コネクション・タスク・フローでは、現在のユーザーに類似していると計算によって判断されたユーザーを表示して、そのユーザーとのコネクションを持つことができます。

推奨コネクション・タスク・フローは、各ユーザーの「プロファイル」ページで、デフォルトで提供されています。

このタスク・フローの実行時における使用方法については、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の推奨コネクション・タスク・フローでの作業に関する項を参照してください。

表45-5に、類似度計算と推奨コネクション・タスク・フローのデフォルト・レシピで使用されている重み付けを示します。このレシピは、similarityURNListタスク・フロー・バインディング・パラメータを編集することで変更できます。詳細は、第45.2.3.3項「アクティビティ・グラフ・サービス・タスク・フロー・パラメータを変更する方法」を参照してください。

表45-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管理者ガイド』の類似度計算の理由文字列のカスタマイズに関する項を参照してください。

45.2.3.1.2 類似アイテム・タスク・フロー

類似アイテム・タスク・フローでは、現在選択しているアイテムのユーザーが興味を持つ可能性があるとアクティビティ・グラフ・エンジンの計算によって判断されたWebCenter Portalアイテムを表示して、そのアイテムとやり取りできます。推奨されるアイテムは、現在のユーザーに固有のものではありませんが、タスク・フローにはそのユーザーが表示権限を持つアイテムのみが示されます。

ユーザーが興味を持つ可能性があるアイテムには、Wikiページ、ブログ・ポスト、ドキュメント、ディスカッション・トピックなどが含まれます。

類似アイテム・タスク・フローでは、ページ上の他のタスク・フローで選択したアイテムに基づいて推奨コンテキストが決定されます。この情報は、タスク・フロー入力パラメータ(通常は、EL式を使用)またはWebCenterResourceSelected ADF UIイベントを通じて提供されます。類似アイテム・タスク・フローのコンテキストを決定するタスク・フローは、次のとおりです。

- 次のドキュメント・サービス・タスク・フローです。

- 最近のドキュメント

- ドキュメント・リスト・ビューア

- ドキュメント・ナビゲータ

- ドキュメント・エクスプローラ

- フォルダ・ビューア

- ドキュメント・マネージャ

- ドキュメント・ブラウザ

- ディスカッション・マネージャ・タスク・フロー

類似アイテム・タスク・フローは、ドキュメント・エクスプローラのファイル用の「関連アイテム」ペインにあり、現在表示しているファイルに類似するアイテムが表示されます。

このタスク・フローの実行時における使用方法については、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の類似アイテム・タスク・フローでの作業に関する項を参照してください。

表45-6に、類似度計算と類似アイテム・タスク・フローのデフォルト・レシピで使用されている重み付けを示します。このレシピは、similarityURNListタスク・フロー・バインディング・パラメータを編集することで変更できます。詳細は、第45.2.3.3項「アクティビティ・グラフ・サービス・タスク・フロー・パラメータを変更する方法」を参照してください。

表45-6 類似アイテムのデフォルト・レシピ

類似度計算

重み

item-edit

100

item-like

50

item-comment

20

item-tag

10

item-all

1

推奨の総合スコアが一番高いアイテムが、タスク・フローで最初に表示されます。各推奨アイテムの最高スコアに関する類似度計算で、関連付けられた理由文字列が存在する場合は、その文字列がアイテム名の下に表示され、なぜそのアイテムを推奨するのかが詳述されます。

最上位の類似度ファンクションに理由文字列が定義されていない場合は、何も表示されません。類似度計算理由文字列は編集したり、文字列を追加したりできます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の類似度計算の理由文字列のカスタマイズに関する項を参照してください。

45.2.3.2 アクティビティ・グラフ・サービス・タスク・フローをページに追加する方法

この項では、推奨コネクション・タスク・フローをアプリケーション・ページに追加する方法について説明します。この手順は、すべてのアクティビティ・グラフ・サービス・タスク・フローで同じです。

推奨コネクション・タスク・フローをFrameworkアプリケーションに追加するには:

1. 第45.1.2項「アクティビティ・グラフ・サービスの要件」の説明に従って、アプリケーションを準備します。

2. タスク・フローを追加するページを開きます。

3. リソース・パレットで、「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」フォルダの順に開きます。

4. 推奨コネクション・タスク・フロー(または、希望するアクティビティ・グラフ・サービス・タスク・フロー)を、JSF(.jspx)ページにドラッグ・アンド・ドロップします。

5. 表示されるポップアップ・メニューから、「リージョン」を選択します。
アクティビティ・グラフ・サービスのADFライブラリ(activitygraph-service-view.jar)をプロジェクトに追加するよう要求される場合があります。「ライブラリの追加」をクリックして確認します。この操作の完了には時間がかかる場合があります。

6. 「タスク・フロー・バインディングの編集」ダイアログにパラメータの値を入力するか、デフォルトを受け入れます。
詳細は、第45.2.3.4項「アクティビティ・グラフ・サービス・タスク・フローおよびタスク・フロー・パラメータ」を参照してください。

7. 「OK」をクリックします。
タスク・フローがページに追加され、プロジェクトのライブラリがタスク・フローを実行するように構成されます。

8. 「設計」ビューでページを右クリックして、「認可の編集」を選択します。「付与先」→「認証済ユーザーの選択」に移動して、「アクション」で、認証済ユーザーにCustomize、Grant、PersonalizeおよびViewという権限を付与します。

9. ページを保存し、実行します。

45.2.3.3 アクティビティ・グラフ・サービス・タスク・フロー・パラメータを変更する方法

各アクティビティ・グラフ・サービス・タスク・フローには、一連の必須およびオプションのタスク・フロー・バインディング・パラメータがあります。これらは、タスク・フローが正常に機能するために役立つ情報を取得する手段を提供します。

タスク・フロー・バインディング・パラメータを使用すると、タスク・フローの正常なレンダリングに必要な値を提供できるのみでなく、タスク・フロー・インスタンスの外観および動作をカスタマイズできます。たとえば、パラメータ値を使用して、ヘッダーとフッターをレンダリングするかどうか、表示する情報の行数や列数、返されたデータにフィルタを適用するかどうかなどを決定できます。

タスク・フロー・バインディング・パラメータの値は、タスク・フローをアプリケーション・ページにドラッグ・アンド・ドロップするときに指定できます。この操作を行うと、「タスク・フロー・バインディング」ダイアログが開きます(詳細は、第45.2.3.2項「アクティビティ・グラフ・サービス・タスク・フローをページに追加する方法」を参照してください)。

ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を調整することもできます。

「タスク・フロー・バインディングの編集」ダイアログにアクセスするには:

1. ページの下部にある「バインディング」タブ(「ソース」タブの横)をクリックして、「バインディング」ビューに移動します。

2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。
図45-6に、「実行可能ファイル」セクションの推奨コネクション・タスク・フローの例を示します。

図45-6 ページ・データ・バインディング定義の推奨コネクション

「図45-6 ページ・データ・バインディング定義の推奨コネクション」の説明

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図45-7)で、必要に応じてバインディング・パラメータの値を変更します(詳細は、第45.2.3.4項「アクティビティ・グラフ・サービス・タスク・フローおよびタスク・フロー・パラメータ」を参照してください)。

図45-7 推奨コネクションの「タスク・フロー・バインディングの編集」ダイアログ

「図45-7 推奨コネクションの「タスク・フロー・バインディングの編集」ダイアログ」の説明

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

45.2.3.4 アクティビティ・グラフ・サービス・タスク・フローおよびタスク・フロー・パラメータ

表45-7に、アクティビティ・グラフ・サービスに適用できるタスク・フロー・バインディング・パラメータのリストと説明を示します。

表45-7 アクティビティ・グラフ・サービス・タスク・フロー・バインディング・パラメータ

パラメータ

タスク・フロー

説明

resourceId

推奨コネクション

類似アイテム

推奨のコンテキストとして使用する個人、スペースまたはアイテムのID。

コネクションのデフォルト値は、現在ログインしているユーザーの式言語トークンです。

スペースのデフォルト値は、タスク・フローが含まれているスペースのリソースIDの式言語トークンです。

アイテムの値は、選択イベントから導出されます。

classURN

類似アイテム

コンテキストのノード・クラス。デフォルトでは、情報は選択イベントから導出されます。

objectName

類似アイテム

推奨のコンテキストとして使用するスペースまたはアイテムの名前。

スペースのデフォルト値は、タスク・フローが含まれているスペースのリソースIDの式言語トークンです。

アイテムの値は、選択イベントから導出されます。

recipe

推奨コネクション

類似アイテム

登録済類似度計算のカンマ区切りリスト=重みペア。このリストにより、表示される推奨とその順序が決定されます。

各タスク・フローのデフォルト・レシピは、第45.2.3.1項「アクティビティ・グラフ・サービス・タスク・フロー」に示されています。

classURNRestrictions

類似アイテム

推奨に含めるノード・クラスのカンマ区切りリスト。非nullの場合、指定したノード・クラスのオブジェクトのみが推奨に含まれます。

デフォルトでは空です。これは、オブジェクトのどのクラスが返されるかについて、制限がないことを意味します。

excludeObjectActions

推奨コネクション

類似アイテム

登録済アクションのカンマ区切りリスト。ログインしているユーザーがとった一連のアクションの対象である人物、スペースまたはアイテムがタスク・フローには表示されません。

たとえば、類似アイテム・タスク・フローのデフォルト値は、作成、編集、コメント、タグです。これは、ユーザー自身が作成、編集、コメントまたはタグ付けしたアイテムが推奨されないことを意味します。

WebCenter Portalのデフォルト・アクションは表45-1にリストされています。

serviceId

類似アイテム

オブジェクトのノード・クラスを識別するために、classURNのかわりにresourceId(およびオプションでresourceType)とともに使用されます。

resourceType

類似アイテム

WebCenter Portalオブジェクトのノード・クラスを識別するために、classURNのかわりにresourceIdおよびserviceIdとともに使用されます。

たとえば、ドキュメント・サービスではresourceTypeを使用して、オブジェクトがWiki、ブログまたはドキュメントであるかどうかを識別します。

suppressPopup

類似アイテム

タスク・フローの各リンクがインライン・ポップアップ(false)のコンテンツを起動するか、それともブラウザ内のウィンドウ(true)のコンテンツを起動するかを決定します。

デフォルト値はfalseです。

45.3 アクティビティ・グラフ・サービスの詳細情報

この項では、アクティビティ・グラフ・サービスで使用できる拡張機能について説明します。次のサブセクションが含まれます:

- 第45.3.1項「推奨データ・コントロールの使用方法」

- 第45.3.2項「アクティビティ・グラフ・サービスREST APIの使用」

45.3.1 推奨データ・コントロールの使用方法

アクティビティ・グラフ・サービスには、サービス用の独自のユーザー・インタフェース(タスク・フロー)の作成を可能にするデータ・コントロールが用意されています。

次のメソッドが公開されます。

- getSimilarObjects - これは、複雑な類似度計算レシピとノード・クラスおよびアクションのフィルタ処理の選択肢とともに、指定されたソースと類似度計算用のSuggestionWrappersのリストを返します。

- queryCommonObjects - 類似としてアクティビティ・グラフによってお薦めされる特定の2つのオブジェクト。これは2つの類似オブジェクトがやり取りするその他のオブジェクトのリストを返します。このリストは、推奨を生成した対話に関与アプリケーション・オブジェクトへのリンクとその詳細を提供するために使用できます。

- recordNotInterested - これは、ユーザーが指定のオブジェクトとやり取りしていないことを記録します。

たとえば、getSimilarObjects()メソッドで、レシピitem-edit=100,item-all=1を使用して現在のユーザーと類似のユーザーのリストを取得できます。推奨は、SuggestionWrapperオブジェクトの形で返されます。アプリケーションは、SuggestionWrapperから、推奨の理由を表す文字列と、最高スコアの提案を生成した類似度計算のURNを取得します。現在のユーザーが「bill」で、getSimilarObjects()から返された最上位推奨ユーザーが「cathy」であるとします。「cathy」のSuggestionWrapperは、「あなたとCathyは共通の3アイテムを編集しました」などの理由文字列を生成することがあり、最上位類似度計算はitem-editになります。

この情報に基づき、アプリケーションは、queryCommonObjects()をコールし、ソース・オブジェクトとして「bill」、ターゲット・オブジェクトとして「cathy」、類似度URNとしてitem-editを渡して、両方のユーザーが編集した3つのドキュメントの名前、アイコンおよびURLを取得できます。名前、アイコンURLおよびアプリケーション・オブジェクトURLは、queryCommonObjects()から返されたQueryResultWrapperオブジェクトから取得できます。

通常、データ・コントロールとメソッドのバインディングには、MethodAction、MethodIterator(メソッドの結果を反復するため)およびTree(生成されるデータ構造の各属性を取得するため)という3つの構成要素が必要になります。これらは、ページ定義ファイルで手動で作成したり、より簡単な方法としてJDeveloper付属のウィザードを使用して作成できます。

45.3.1.1 getSimilarObjectsとqueryCommonObjectsのメソッドの追加

推奨データ・コントロールのgetSimilarObjectsメソッドまたはqueryCommonObjectsメソッドのいずれかをプロジェクトに追加するには、次の手順を実行します。

1. 推奨データ・コントロールをプロジェクトに追加します(カタログ内でそれを選択し、右クリックして「プロジェクトに追加」を選択するか、またはプロジェクト内でそれをJSPページ(.jspx)にドラッグ・アンド・ドロップすることで)。

2. ADF表をJSPページへドラッグします。

3. 要求されたら、「データソースにバインド」チェック・ボックスを選択します。

4. 「推奨データ・コントロール」に移動し、必要なAPIメソッドからのSuggestionWrapper結果を選択します。これにより、メソッド・アクション・バインディングと結果コレクションへのイテレータが自動的に作成されます。

5. 公開するノードを選択します。これにより、提案内の値にアクセスするためのツリーが自動的に作成されます。

6. メソッド・アクションのパラメータを構成します。通常、これらはpageFlowScope変数として定義されている式です。
getSimilarObjectsメソッドの場合、次のとおりです。

- classURN - 推奨ソースのノード・クラスのURN。たとえば、WC.user

関連項目:

ノード・クラスの詳細は、第45.1.1項「アクティビティ・グラフ・サービスの理解」を参照してください。

- objectURN - 推奨ソースのURN。たとえば、#{securityContext.userName}

- 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

- classURNRestrictionList - 結果をフィルタするためのクラスのカンマ区切りリスト。

- excludeObjectActionList - 結果のフィルタに使用するアクションURNのカンマ区切りリスト。

- maxResults - 返される推奨の最大数。

queryCommonObjectsメソッドの場合、次のとおりです。

- srcClassURN - 推奨のソース・オブジェクトのノード・クラスのURN。たとえば、WC.user

関連項目:

ノード・クラスの詳細は、第45.1.1項「アクティビティ・グラフ・サービスの理解」を参照してください。

- srcObjectURN - 推奨のソース・オブジェクトのURN。たとえば、#{securityContext.userName}

- trgClassURN - ターゲット・オブジェクト(つまり、推奨オブジェクト)のノード・クラスのURN。

- trgObjectURN - ターゲット・オブジェクト(つまり、推奨オブジェクト)のURN。

- userCredentialClass - nullの場合、WebCenter Portalユーザー・タイプが使用されます。

- similarityURN - 推奨に使用される類似度計算のURN。

- maxResults - 返される共通オブジェクトの最大数。結果は最近のアクション発生日別にソートされ、最上位のmaxResultsオブジェクトが返されます。

注意:

便宜上、getSimilarObjectsメソッドは、APIの下位レベルで使用されているリスト引数やマップ引数のかわりに文字列引数を取ります。タスク・フロー入力パラメータは通常、このような引数で構成されるからです。

45.3.1.2 recordNotInterestedメソッドの追加

推奨データ・コントロールのrecordNotInterestedメソッドをプロジェクトに追加するには、次の手順を実行します。

1. プロジェクト内でボタン・コンポーネントを(ADF Facesから)JSPページ(.jspx)へドラッグ・アンド・ドロップします。

2. ボタン・コントロールを右クリックし、「ADFコントロールにバインド」をクリックします。

3. 「ADFコントロールにバインド」ウィンドウで、推奨データ・コントロールを展開し、recordNotInterested()メソッドを選択します。

4. 「OK」をクリックして「ADFコントロールにバインド」ウィンドウを閉じます。

5. 「アクション・バインディングの編集」ウィンドウで次のパラメータの値を入力します。

- classURN - 推奨ソースのノード・クラスのURN。たとえば、WC.user

関連項目:

ノード・クラスの詳細は、第45.1.1項「アクティビティ・グラフ・サービスの理解」を参照してください。

- objectURN - 推奨ソースのURN。たとえば、#{securityContext.userName}

6. 「OK」をクリックします。

45.3.2 アクティビティ・グラフ・サービスREST APIの使用

WebCenter Portalには、アクティビティ・グラフ・サービスをサポートするREST APが用意されています。アクティビティ・グラフ・サービスREST APIを使用すると、コネクション、スペースおよびアイテムの推奨を提供するための独自のインタフェースを作成できます。

この項では、アクティビティ・グラフ・サービスに関連付けられているREST APIについて説明します。次のサブセクションが含まれます:

- 第45.3.2.1項「アクティビティ・グラフのエントリ・ポイント」

- 第45.3.2.2項「アクティビティ・グラフのリソース・タイプの分類」

- 第45.3.2.3項「セキュリティに関する考慮事項」

- 第45.3.2.4項「アクティビティ・グラフのリソース・タイプ」

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

45.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項「リソース・タイプ」を参照してください。

45.3.2.2 アクティビティ・グラフのリソース・タイプの分類

クライアントでは、使用するエントリ・ポイントが識別されると、リソース・タイプの分類が精査されて必要な操作が実行されます。個々のリソース・タイプの詳細は、第45.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

45.3.2.3 セキュリティ上の考慮事項

このサービスでは、セキュリティに関する特定の考慮事項はありません。一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

45.3.2.4 アクティビティ・グラフのリソース・タイプ

この項では、各リソース・タイプについて知っておく必要があるすべての情報を提供します。次のサブセクションが含まれます:

- 第45.3.2.4.1項「urn:oracle:webcenter:activitygraph:recommendations」

- 第45.3.2.4.2「urn:oracle:webcenter:activitygraph:recommendations:recommendation」

- 第45.3.2.4.3「urn:oracle:webcenter:activitygraph:items」

- 第45.3.2.4.4項「urn:oracle:webcenter:activitygraph:items:item」

45.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 - 推奨に含めるノード・クラスのカンマ区切りリスト。非nullの場合、指定したノード・クラスのオブジェクトのみが推奨に含まれます。

- 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からリンクされるリソース・タイプ

表45-8に、クライアントがこのリソースからリンクできるリソース・タイプを示します。

表45-8 recommendationsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:activitygraph:recommendations

45.3.2.4.2 urn:oracle:webcenter:activitygraph:recommendations:recommendation

推奨レスポンスには、推奨オブジェクトと、そのオブジェクトへのアクセスに使用するURIが含まれています。

recommendationへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してrecommendationリソースにアクセスする方法を示します。

resourceIndex
recommendations
recommendation

recommendationの読取り専用要素

表45-9に、recommendationsリソースの読取り専用要素を示します。

表45-9 recommendationの読取り専用要素

要素

タイプ

説明

score

Float

リスト内の他の推奨と比較して計算された、この推奨の総合スコア。レシピを構成する個々の類似URNに関連付けられたコンポーネント・スコアの重み付けされた合計で、0から1の浮動小数点数からなります。

item

urn:oracle:webcenter:activitygraph:items:item

推奨されているユーザー、アイテムまたはスペース。

componentScores

componentScore要素のリスト

推奨用のレシピ内の各類似URNに関連付けられたコンポーネント・スコアのリスト。コンポーネント・スコアは、理由およびユーザーと推奨オブジェクトがやり取りする共通のアイテムを取得するために使用できるリンクを備えている場合があります。

45.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からリンクされるリソース・タイプ

表45-10に、クライアントがこのリソースからリンクできるリソース・タイプを示します。

表45-10 itemsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:activitygraph:items

45.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の書込み可能要素

表45-11に、このリソース・タイプの書込み可能要素を示します。

表45-11 itemの書込み可能要素

要素

タイプ

必須

制約

説明

status

String

はい

興味がある

興味がない

ユーザーがオブジェクトに対して興味があるかどうか

itemの読取り専用要素

表45-12に、このリソース・タイプの読取り専用要素を示します。これらの要素の中にはオブジェクトで使用できないものもあります。

表45-12 itemの読取り専用要素

要素

タイプ

説明

classURN

String

オブジェクトのノード・クラス

objectURN

String

オブジェクトの識別子

name

String

オブジェクトの名前

description

String

オブジェクトの説明

modified

日付

オブジェクトの最終更新日

modifiedByUser

PersonReference

オブジェクトを最後に更新したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクが含まれます

author

PersonReference

オブジェクトを作成したユーザーに関するユーザー情報。GUID、ID、表示名およびプロファイル・アイコンへのリンクが含まれます

itemからリンクされるリソース・タイプ

表45-13に、クライアントがこのリソースからリンクできるリソース・タイプを示します。

表45-13 itemに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:activitygraph:items:item

via

基礎となるオブジェクトのresourceType

45.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管理者ガイド』のアクティビティ・グラフ・メタデータのインポートに関する項を参照してください。

この項には次のサブセクションが含まれます:

- 第45.4.1項「カスタム・ノード・クラスの定義」

- 第45.4.2項「カスタム・アクションの定義」

- 第45.4.3項「カスタム類似度計算の定義」

- 第45.4.4項「カスタム・ランク計算の定義」

- 第45.4.5項「カスタム・アクティビティ・プロバイダの登録」

- 第45.4.6項「カスタムQRPPの登録」

45.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>

例45-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を使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをFrameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

45.4.2 カスタム・アクションの定義

アクティビティ・グラフには、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の間の浮動小数値であるサブ要素。リレーション値の計算では、アクションの発生後の一定の減衰期間が経過するたびに、各アクションの値が減衰因子で乗算されます。

例45-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を使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをFrameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

45.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リレーションの組合せの場合)浮動小数として表され、コンポーネント・リレーションに適用される重み

例45-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を使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをFrameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

45.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に表示ランクを永続化させます。

例45-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を使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをFrameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

45.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クラスの、完全修飾された名前を識別するサブ要素。

例45-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を使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをFrameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

45.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クラスの完全修飾された名前を識別するサブ要素。

例45-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を使用して、更新済のアクティビティ・グラフ・メタデータ・ファイルをFrameworkアプリケーションのデプロイ先の管理対象サーバーにインポートします。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアクティビティ・グラフのメタデータのインポートに関する項を参照してください。

45.5 アクティビティ・グラフ・サービスのトラブルシューティング

この項では、アクティビティ・グラフ・サービスの使用中に発生する可能性がある問題のトラブルシューティングに役立つ情報を提供します。

トラブルシューティングのソリューションでは、次が前提となります:

- アクティビティ・グラフ・エンジンが正しくデプロイされている

- WC_Utilities管理対象サーバーが起動され、稼働中である

- プロパティopenusage enabledがtrueである

45.5.1 アクティビティ・グラフ・サービス・タスク・フローのトラブルシューティング(すべてのタスク・フロー)

問題

有効なユーザー・アクティビティの実行後でも、タスク・フローに推奨が表示されません。

解決方法

イベントが分析イベント・コレクタによって取得されているかどうかを確認してください。これは、コレクタ・ログを確認することにより検証できます。このログにイベントの取得が記録されていない場合、分析イベント・コレクタに問題があります。

詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の分析イベント・コレクションの検証に関する項を参照してください。

問題

分析イベント・コレクタのログにはイベントが取得されていることが記録されていますが、タスク・フローには推奨が表示されません。

解決方法

「アクティビティ・グラフのスケジュールとステータス」ページで、アクティビティ・グラフ・エンジンの前回の実行時刻を確認してください。最近のイベントを収集および分析するには、スケジュールの調整かアクティビティ・グラフ・エンジンの即時実行が必要になることがあります。

問題

アクティビティ・グラフ・エンジンが正常に実行されましたが、タスク・フローには推奨が表示されません。

解決方法

アクティビティ・データベース(ActivitiesDS)のリレーション表にデータが存在するかどうかを確認してください。アクティビティ・グラフ・エンジンが正しく動作している場合は、これらのリレーション表になんらかのデータが存在するはずです。表にデータが存在するのにタスク・フローに推奨がまだ表示されない場合は、タスク・フローが破損している可能性があります。

45.5.2 推奨コネクション・タスク・フローのトラブルシューティング

問題

有効なユーザー操作であるにもかかわらず、一部のユーザーが推奨コネクションとして表示されません。

解決方法

これは、WebCenter Portal: Spacesとサービスが同一のOIDに接続されていない場合に発生する可能性があります。この場合、各サービスの接続先OIDに存在しないユーザーには、推奨コネクションが提案されません。2つのOIDのどちらにも同じユーザーを作成するか、WebCenter Portal: Spacesとサービスを同一のOIDに接続する必要があります。

45.5.3 類似アイテム・タスク・フローのトラブルシューティング

類似アイテム・タスク・フローに推奨アイテムが表示されるには、推奨アイテムを表示するアイテムがページ上の別のタスク・フロー(ドキュメント・マネージャ・タスク・フローなど)で選択されている必要があります。

問題

有効なユーザー操作の後でも、類似アイテム・タスク・フローでアイテムが提案されません。

解決方法

これは、現在のユーザーにアイテムに対する表示権限がないためです。これが正常な動作です。アイテムに対する十分な権限がない場合、ユーザーにはそのアイテムの推奨が表示されません。アイテムをユーザーに対して表示するには、そのユーザーに十分な権限を付与してください。

問題

特定のアイテム・タイプが表示されません(たとえば、タスク・フローにドキュメント、Wiki、ブログが表示されるが、ディスカッションは表示されません)。

解決方法

特定のサービスのステータスを確認してください。サービスが使用できない場合、そのサービスのアイテムは類似アイテム・タスク・フローに表示されません。

問題

アイテムの提案が一部のユーザーに対してのみ行われます。それ以外のユーザーには、類似アイテム・タスク・フローのアイテムが提案されません。

解決方法

これは、WebCenter Portal: Spacesとサービスが同一のOIDに接続されていない場合に発生する可能性があります。この場合、各サービスの接続先OIDに存在しないユーザーには、そのサービスの推奨アイテムが表示されません。2つのOIDのどちらにも同じユーザーを作成するか、WebCenter Portal: Spacesとサービスを同一のOIDに接続する必要があります。

第VIII部

ユーザーによる追跡の支援

第VIII部の内容は次のとおりです。

- 第46章「分析サービスの統合」

- 第47章「リスト・サービスの統合」

- 第48章「通知の統合」

- 第49章「最近のアクティビティ・サービスの統合」

- 第50章「ワークリスト・サービスの統合」

- 第51章「イベント・サービスの統合」

- 第52章「RSSサービスの統合」

46 分析サービスの統合

分析サービスを使用すると、Frameworkアプリケーションの使用状況およびパフォーマンスのメトリックを表示できます。この章では、Oracle WebCenter Portal: Frameworkを使用して作成したアプリケーションに分析サービスを統合する方法について説明します。

この章には次の項が含まれます:

- 第46.1項「分析サービスの概要」

- 第46.2項「分析サービスの基本構成」

- 第46.3項「分析レポートの作成」

分析タスク・フローの使用の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の分析サービスの使用に関する項を参照してください。

データベース表およびパラメータの詳細なリストは、付録G「WebCenter Portalの分析データベース・スキーマ」を参照してください。

46.1 分析サービスの概要

分析サービスは、ポータルのリアルタイムの使用状況およびアクティビティのレポートを提供します。この項では、分析サービス、タスク・フローおよび使用方法の概要を説明します。次のサブセクションが含まれます:

- 第46.1.1項「分析サービスの理解」

- 第46.1.2項「分析サービスの要件」

- 第46.1.3項「実行時の処理」

46.1.1 分析サービスの理解

分析サービスにより、管理者とユーザーは、WebCenter Portalアプリケーション内のトラフィックおよび使用状況を追跡し、分析できます。分析サービスの基本的な機能は次のとおりです。

- 使用状況トラッキングのメトリック: 分析サービスでは、コミュニティ、ページ、ポートレットおよびドキュメント・ヒットを含む、一般的なポータル機能のメトリックを収集してレポートします。

- 動作トラッキング: 分析サービスを使用してWebCenter Portalメトリックを分析して、ページのアクセス時間や使用時間などの使用パターンを判断できます。

- ユーザー・プロファイルとの相関: 分析サービスを使用して、メトリック情報とユーザー・プロファイル情報との相関関係を示すことができます。使用状況トラッキング・レポートを表示し、国、会社、役職などのユーザー・プロファイル・データでフィルタ処理できます。

- カスタム・レポート: 開発者およびビジネス・ユーザーは、分析データを問い合せるカスタム・レポートを作成できます。詳細は、第46.3.1項「SQLデータ・コントロールの使用」を参照してください。

表46-1は、WebCenter Portalで使用可能な分析タスク・フローを示しています。これらのタスク・フローは、SpacesアプリケーションおよびFrameworkアプリケーションで同様に動作します。これらのタスク・フローとその使用方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のSpacesの分析タスク・フローの理解に関する項を参照してください。

表46-1 JDeveloperで使用可能な分析タスク・フロー

タスク・フロー

説明

WebCenter Portalトラフィック

ポータル内の共通イベントの概要表示です。

ページ・トラフィック

ポータル内でページにアクセスしたユーザーの人数(重複を除く)とページ・ヒット数を表示します。

ログイン・メトリック

ポータル・ログインをレポートします。

ポートレット・トラフィック

ポートレットの使用状況データを表示します。

ポートレット・レスポンス時間

ポートレットのパフォーマンス・データを表示します。

ポートレット・インスタンス・トラフィック

ポートレット・インスタンス*の使用状況データを表示します。

ポートレット・インスタンス・レスポンス時間

ポートレット・インスタンス*のパフォーマンス・データを表示します。

検索メトリック

ポータル検索を追跡します。

ドキュメント・メトリック

ドキュメント・ビューを追跡します。

Wikiメトリック

最も人気のあるWikiや最も人気のないWikiを追跡します。

ブログ・メトリック

最も人気のあるブログや最も人気のないブログを追跡します。

ディスカッション・メトリック

最も人気のあるディスカッションや最も人気のないディスカッションを追跡します。

* 複数の異なるページに同じポートレットが表示される場合、配置されている各ポートレットをポートレット・インスタンスと呼びます。

46.1.2 分析サービスの要件

分析サービスでは、分析スキーマ(ACTIVITIES)が適切なデータベースに設定され実行されている必要があります。また、Oracle WebCenter Portalの分析コレクタがWC_Utilities管理対象サーバーで起動されて実行中である必要もあります。インストール手順の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』を参照してください。

インストール時に、分析コレクタは、インストール・デフォルトを使用してイベントを受信するようにデフォルトで構成されます。デフォルト値がインストールに適していない場合は、WLSTまたはFusion Middleware Controlを使用して別の値を設定する必要が生じることがあります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の分析コレクタ設定の構成に関する項を参照してください。

分析タスク・フローを介して使用状況およびパフォーマンスのメトリックを表示するには、Frameworkアプリケーションのイベント生成を有効にし、分析データベース(ACTIVITIES)への接続を設定する必要があります。JDeveloperでこれを行う方法の詳細は、第46.2.2項「分析サービスの接続の設定」を参照してください。

46.1.3 実行時の処理

実行時には、Frameworkアプリケーションでのユーザー・アクティビティによってイベント・データが生成されます。たとえば、ユーザー・ログイン、ディスカッション・トピックの参照、ドキュメントの表示などが行われるたびに、イベントが記録されます。OpenUsage APIは、ユーザー・データグラム・プロトコル(UDP)を使用してイベント・メトリックを分析コレクタに送信し、イベント・データは分析データベース(ACTIVITIES)に格納されます。

クラスタ環境でない場合、Frameworkアプリケーションはコレクタの場所で構成され、すべてのイベントはその場所に送信されます。

注意:

現在のリリースでは、分析コレクタはクラスタ化できません。

Frameworkアプリケーションに含まれる分析タスク・フローおよびカスタム分析レポート(SQLデータ・コントロールに基づく)では、実行時の分析データベースへの問合せによって、標準イベントに関して収集されたメトリックを表示します。実行時のタスク・フローの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の分析タスク・フローの使用に関する項を参照してください。

46.2 分析サービスの基本構成

この項では、Frameworkアプリケーションに分析サービスを統合する方法について説明します。

この項には次のサブセクションが含まれます:

- 第46.2.1項「分析サービスの構成ロードマップ」

- 第46.2.2項「分析サービスの接続の設定」

- 第46.2.3項「アプリケーションへの分析イベント・コードの追加」

- 第46.2.4項「MDSでの分析カスタマイズ用のネームスペースの構成」

- 第46.2.5項「分析タスク・フローの設計時の追加」

- 第46.2.6項「分析タスク・フローおよび使用状況データのセキュリティの設定」

第46.1.2項「分析サービスの要件」も参照してください。

46.2.1 分析サービスの構成ロードマップ

図46-1と図46-2に示されたフロー・チャートは、Frameworkアプリケーション内で分析サービスを動作させるために必要な前提条件とタスクの概要を提供しています。

図46-1 Frameworkアプリケーションに対する分析サービスの構成

表46-2 Frameworkアプリケーションに対する分析サービスの構成

アクター

タスク

サブタスク

管理者

1.WebCenter Portal: Frameworkおよび分析サービス用のバックエンド・コンポーネントをインストールします

開発者

2.Frameworkアプリケーションに分析サービスを統合します

2.a JDeveloperでActivitiesデータベースへの接続を構成します

2.b JDeveloperで分析コレクタへの接続を構成します

2.c JDeveloperでページに分析タスク・フローを追加します

開発者/

管理者

3.次のいずれかのツールを使用してFrameworkアプリケーションをデプロイします

- JDeveloper (開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

- WLS管理コンソール(管理者)

管理者

4.(オプション)次のいずれかのツールを使用して分析コレクタを構成します

- システムMBeanブラウザ

- WLST

開発者

5.(オプション) JDeveloperを使用してページおよびポートレットのイベントを計測し、アプリケーションを再デプロイします

開発者/

管理者

6.(オプション)次のいずれかのツールを使用して接続パラメータを追加/変更します:

- JDeveloper、アプリケーションの再デプロイ(開発者)

- Fusion Middleware Control(管理者)

- WLST (管理者)

エンド・ユーザー

7.Frameworkアプリケーションで分析データを使用できることをテストします

6.a Frameworkアプリケーションにログインします

6.b 分析タスク・フローを表示します

46.2.2 分析サービスの接続の設定

分析サービスでは、Frameworkアプリケーションが分析データベース(ACTIVITIES)に接続している必要があります。イベント情報を特定の分析コレクタに送信するように、Frameworkアプリケーションを構成する必要もあります。

注意:

JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でFusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の分析サービスの管理に関する項を参照してください。

この項には次のサブセクションが含まれます:

- 第46.2.2.1項「分析データベースへの接続を設定する方法」

- 第46.2.2.2項「分析コレクタのプロパティを設定する方法」

- 第46.2.2.3項「分析コレクタへの接続を設定する方法」

46.2.2.1 分析データベースへの接続を設定する方法

分析サービスでは、分析イベント・データが格納される分析データベース(ACTIVITIES)への接続が必要です。

分析データベースへの接続を設定するには:

1. ACTIVITIESデータベースが稼働中であることを確認します。
第46.1.2項「分析サービスの要件」を参照してください。

2. アプリケーション・ナビゲータで、「アプリケーション・リソース」パネルを開きます。

3. 「接続」を右クリックし、「接続の作成」を選択し、「データベース」を選択します。

4. 「データベース接続の作成」ダイアログで、データベース接続について次の情報を入力します。

- 接続名: connectionName (例: myAnalyticsDatabaseConnection)

- 接続タイプ: Oracle (JDBC)

- ユーザー名: username (データベースにアクセスできるユーザー)

- パスワード: password (指定したユーザーのパスワード)

- ホスト名: host (分析データベースがインストールされている場所。例: localhost)

- JDBCポート: port (例: 1521)

- SID: sid (データベースのシステム識別子)

5. 「接続のテスト」をクリックし、成功した場合は、「OK」をクリックします。

6. 「データソースへの関連付け」ダイアログで、「ActivitiesDS」を選択します(図46-2)。

図46-2 分析データベースへの接続

これによってACTIVITIESスキーマへのデータ・ソースが作成され、設計時にFrameworkアプリケーションで分析をテストできます。

7. 「OK」をクリックします。
「アプリケーション・リソース」ペインで、「接続」の下に接続がノードとして表示されます。

46.2.2.2 分析コレクタのプロパティを設定する方法

デフォルトでは、分析コレクタはWC_Utilities管理対象サーバーにインストールされ、次のデフォルト値を使用してイベントを受信するように構成されます。

分析コレクタの構成

デフォルト値

コレクタのホスト名

localhost

デフォルト・ポート

31314

最大ポート番号

31314

ブロードキャスト・タイプ

Multicast

クラスタリング

クラスタ名

クラスタのブロードキャスト頻度

Disabled

- null

- 10 seconds

これらのデフォルト値が自分のインストールに適さない場合は、管理者がWLSTまたはFusion Middleware Controlを使用して適切な値を構成できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の分析コレクタ設定の構成に関する項を参照してください。

46.2.2.3 分析コレクタへの接続を設定する方法

分析サービスでは、WebCenter 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プロパティを設定するには:

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」をクリックします。
これらの手順によって、現在のFrameworkアプリケーション用の統合WebLogic ServerでOpenUsageが使用できます。統合WebLogic Serverが稼働中の場合は、再起動して新しい設定を反映する必要があります。詳細は、第69.2項「統合WebLogic ServerへのFrameworkアプリケーションのデプロイ」を参照してください。

46.2.3 アプリケーションへの分析イベント・コードの追加

大部分のイベントはデフォルトで構成されているため、イベントを送信するためにアプリケーション内で追加のコーディングを行う必要はありません。唯一の例外はページ・ビュー・イベントで、このイベントについては、第46.2.3.1項「ページ・ビュー用のイベント・コードの追加」に記載されている追加のコードが必要です。

46.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);
}

46.2.4 MDSでの分析カスタマイズ用のネームスペースの構成

分析タスク・フローではMDSを使用して、ユーザーが作成したカスタマイズを格納し、これらのカスタマイズは分析固有のMDSネームスペースに格納されます。Frameworkアプリケーションで分析タスク・フローに対するユーザー・カスタマイズを有効にするには、分析メタデータのネームスペースをadf-config.xmlで構成する必要があります。

注意:

さらに、各タスク・フローでは、ユーザー・カスタマイズの詳細が格納される一意のMDSドキュメントを指定する必要があります。第46.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. ファイルを保存します。

第22章「コンポーザ固有のMDS構成の実行」も参照してください。

46.2.5 分析タスク・フローの設計時の追加

この項では、分析サービス・タスク・フローについて説明し、分析タスク・フローをアプリケーションに追加する方法について説明します。次のサブセクションが含まれます:

- 第46.2.5.1項「分析タスク・フロー」

- 第46.2.5.2項「分析タスク・フローをページに追加する方法」

- 第46.2.5.3項「分析タスク・フローのパラメータを変更する方法」

- 第46.2.5.4項「分析タスク・フローの実行時のカスタマイズをエンド・ユーザーに許可する方法」

- 第46.2.5.5項「分析タスク・フローおよびタスク・フロー・パラメータ」

46.2.5.1 分析タスク・フロー

表46-3は、WebCenter Portalで使用可能な分析タスク・フローを示しています。これらのタスク・フローと、実行時にユーザーに表示される情報の種類の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のSpacesの分析タスク・フローの理解に関する項を参照してください。

表46-3 JDeveloperで使用可能な分析タスク・フロー

分析タスク・フロー

説明

WebCenter Portalトラフィック

ポータル内の共通イベントの概要表示です。

ページ・トラフィック

ポータル内でページにアクセスしたユーザーの人数(重複を除く)とページ・ヒット数を表示します。

ログイン・メトリック

ポータル・ログインをレポートします。

ポートレット・トラフィック

ポートレットの使用状況データを表示します。

ポートレット・レスポンス時間

ポートレットのパフォーマンス・データを表示します。

ポートレット・インスタンス・トラフィック

ポートレット・インスタンス*の使用状況データを表示します。

ポートレット・インスタンス・レスポンス時間

ポートレット・インスタンス*のパフォーマンス・データを表示します。

検索メトリック

ポータル検索を追跡します。

ドキュメント・メトリック

ドキュメント・ビューを追跡します。

Wikiメトリック

最も人気のあるWikiや最も人気のないWikiを追跡します。

ブログ・メトリック

最も人気のあるブログや最も人気のないブログを追跡します。

ディスカッション・メトリック

最も人気のあるディスカッションや最も人気のないディスカッションを追跡します。

46.2.5.2 分析タスク・フローをページに追加する方法

分析タスク・フローをFrameworkアプリケーションに追加するには:

1. 第46.1.2項「分析サービスの要件」の説明に従って、アプリケーションを準備します。

2. ポートレット、ディスカッション、ドキュメント、検索など、分析イベント・データを使用できるサービスがアプリケーションに含まれていることを確認します。

注意:

アプリケーションを実行したときに使用状況データがない場合は、分析タスク・フローから「表示するデータがありません」というメッセージが表示されます。

3. タスク・フローを追加するJSFページ(.jspx)を開きます。

4. 「リソース・パレット」で、「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」フォルダを開きます(図46-3)。

図46-3 「リソース・パレット」で使用可能な分析タスク・フロー

5. 「分析」タスク・フローを、ページの<af:form>タグの内側にドラッグ・アンド・ドロップします。

6. 「作成」ポップアップ・メニューから、「リージョン」を選択します。
分析サービスのADFライブラリ(analytics-reporting-service-view.jar)をプロジェクトに追加するよう要求される場合があります。「ライブラリの追加」をクリックして確認します(図46-4)。

図46-4 分析サービスのADFライブラリの追加

7. 「タスク・フロー・バインディングの編集」ダイアログで、分析タスク・フロー・パラメータの値を入力します。

- applicationName - 必須

- analyticsResourceId - 必須

- analyticsReportTitle - オプション

- maxDataPointsPerSeries - オプション

詳細は、第46.2.5.5項「分析タスク・フローおよびタスク・フロー・パラメータ」を参照してください。

8. 「OK」をクリックします。
タスク・フローがページに追加され、タスク・フローを実行するようにViewControllerプロジェクトのライブラリが構成されます。

9. プロジェクトを保存し、ページを実行して、Frameworkアプリケーション内でタスク・フローが動作することを確認します。
アプリケーションを実行したときに使用状況データがない場合は、分析タスク・フローから「表示するデータがありません」というメッセージが表示されます。

テスト中のタスク・フローに関連するアクションを実行することで、表示する分析タスク・フローのデータを作成できます。たとえば、ディスカッション・メトリックをテストするには、ディスカッションを作成および表示したり、ページ・メトリックをテストするには、ページを作成および表示したりするといった具合です。

46.2.5.3 分析タスク・フローのパラメータを変更する方法

各分析タスク・フローには、一連の必須およびオプションのタスク・フロー・バインディング・パラメータがあります。必須パラメータは強制的なものではありませんが、これを使用すると、タスク・フローが正しく動作するために必要な情報を取得できます。たとえば、特定のタスク・フロー・インスタンスに対するユーザー・カスタマイズをMDSに格納する場合は、必要なMDSドキュメントを指定する必要があります。

また、タスク・フロー・バインディング・パラメータを使用すると、タスク・フロー・インスタンスの外観と動作もカスタマイズできます。たとえば、パラメータ値を使用して、分析データの上に表示されるタイトルを指定できます。

タスク・フロー・バインディング・パラメータの値は、タスク・フローをアプリケーション・ページにドラッグ・アンド・ドロップするときに指定できます。この操作を行うと、「タスク・フロー・バインディング」ダイアログが開きます(詳細は、第46.2.5.2項「分析タスク・フローをページに追加する方法」を参照してください)。

ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を実行時に調整することもできます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の分析タスク・フロー・プロパティの設定に関する項を参照してください。

「タスク・フロー・バインディングの編集」ダイアログにアクセスするには:

1. ページの下部にある「バインディング」タブ(「ソース」タブの横)をクリックして、「バインディング」ビューに移動します。

2. 「実行可能ファイル」には、ページに追加したタスク・フローのリストが表示されます。分析タスク・フローを選択します(図46-5)。

図46-5 分析タスク・フローの入力パラメータへのアクセス

3. 「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」アイコン(鉛筆)をクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログ(図46-6)で、必要に応じてバインディング・パラメータ値を指定します
詳細は、第46.2.5.5項「分析タスク・フローおよびタスク・フロー・パラメータ」を参照してください。

図46-6 分析タスク・フローのバインディング・パラメータの追加

5. 終了したら、ページを保存し実行して、結果を確認します。

46.2.5.4 分析タスク・フローの実行時のカスタマイズをエンド・ユーザーに許可する方法

特定のタスク・フロー・インスタンスへのユーザー・カスタマイズを可能にするには、カスタマイズが格納されるMDSドキュメントを、Analytics Resource Idパラメータを使用して指定する必要があります。

IDは一意である必要があるため、<app_name>_<page_name>_<task_flow>_<sequence>のような、一貫性のある命名パターンの使用を検討します。たとえば、ページ・トラフィック・タスク・フローの場合は、analyticsResourceIdパラメータをmyapp_analyticspage_pagetraffic_1に設定します。

詳細は、第46.2.5.3項「分析タスク・フローのパラメータを変更する方法」を参照してください。

46.2.5.5 分析タスク・フローおよびタスク・フロー・パラメータ

表46-4は、分析サービスに適用可能なタスク・フロー・バインディング・パラメータをリストし説明しています。

表46-4 分析タスク・フロー・バインディング・パラメータ

パラメータ(*は必須)

タスク・フロー

説明

analyticsReportTitle

すべて

分析データの上に表示されるタイトルを指定します。つまり、デフォルトのレポート・タイトルを上書きできます。図46-7「analyticsReportTitle - 例」も参照してください。

analyticsResourceId*

すべて

タスク・フロー・インスタンスに対するユーザー・カスタマイズ/アプリケーション・カスタマイズをMDSに格納するために生成されるMDSドキュメントを指定します。たとえば、mymainloginmetricsと入力します。

applicationName*

すべて

分析データを表示する対象のFrameworkアプリケーションの名前を指定します。たとえば、MyPortalApplicationと入力します。

分析データベースを使用して複数のアプリケーションのイベント・データを格納できるため、このパラメータは、表示するアプリケーション・データの特定に必要です。

省略した場合、タスク・フローではすべてのアプリケーションの分析データが表示されます。

maxDataPointsPerSeries

すべて

棒グラフまたは折れ線グラフに表示されるデータ・ポイントの最大数を指定します。1から1000の範囲の値を入力します。

デフォルト値は25です。

データ・ポイントの数が多いほど、グラフの表示に時間がかかる場合があります。図46-8「maxDataPointsPerSeries - 例」も参照してください。

図46-7 analyticsReportTitle - 例

図46-8 maxDataPointsPerSeries - 例

46.2.6 分析タスク・フローおよび使用状況データのセキュリティの設定

分析タスク・フローの目的は、容量計画、サービス品質(QoS)分析、投資収益率(ROI)分析、検索の最良のカスタマイズなど、特定のビジネス機能を実行する限られた一連の管理ユーザーに対して、使用状況メトリックを表示することです。

分析用の使用状況データはポータル分析にとって重要ですが、ポータル・ユーザーにとって個人的または機密的な場合があります。たとえば、検索、ドキュメントおよびポートレットの各レポートは、電子メール・アドレス、名、姓などのユーザー・プロパティに基づく、特定のユーザーのアクティビティ・メトリックを表示するように構成できます。

分析タスク・フローおよびカスタム・レポートに関連するセキュリティとプライバシの問題を保護する方法は、次のとおりです。

- 分析タスク・フロー、カスタム・レポートおよび機密的な使用状況データを表示するページへの管理者アクセスを管理します。
分析タスク・フローのページへの追加、カスタム分析データ・コントロールに基づくレポートの作成、または機密的な使用状況メトリックを表示するように設定されているページの参照を行える管理ユーザーの数を限定するには、新しい管理グループを作成し、それに応じてグループ・メンバーシップを管理します。

- 分析タスク・フローへのユーザー・アクセスを管理します。
特に必要でないかぎり、分析タスク・フローおよびカスタム・レポートには、プライベート・データや機密データを含めないようにします。レポート内のメトリックにプライベート・データや機密データが含まれる場合、該当の指定ユーザーのみがタスク・フローまたはページにアクセスできるようにセキュリティを構成します。

たとえば、設計時に開発者は、管理者でないユーザーにページへの適切な権限を与えることによって、分析タスク・フローを公開できます。また、開発者は、デプロイ前にレポートをカスタマイズして、特定のレポート・オプション(時間枠、グラフのタイプ、ユーザー・プロパティ・フィルタ、グループ化基準オプションなど)を非表示/表示および事前定義できます。管理者は実行時に同じ操作、つまり、ページ・アクセスの付与および表示される情報のカスタマイズを行えます。管理者でないユーザーも、表示が許可されているレポートをパーソナライズできますが、管理者が行ったカスタマイズを変更できません。

- 認証されていないユーザーが分析タスク・フローをページに追加したり、機密データを表示できないようにします。

46.3 分析レポートの作成

デフォルトの分析タスク・フローでは、一般的な分析イベント・メトリックを固有の表示形式で表示します。分析データを異なる方法で表示したり、カスタムのイベント・データを表示する場合は、SQLを使用してカスタム分析レポートを作成できます。

この項には次のサブセクションが含まれます:

- 第46.3.1項「SQLデータ・コントロールの使用」

- 第46.3.2項「すぐに使用できる分析レポートのSQL文」

- 第46.3.3項「ユーザー・メトリックについての問合せのサンプル」

- 第46.3.4項「特定のメトリックについての分析データベース問合せのサンプル」

データベース表およびパラメータの詳細なリストは、付録G「WebCenter Portalの分析データベース・スキーマ」を参照してください。

46.3.1 SQLデータ・コントロールの使用

分析データベースから取得する情報をSQL問合せ文で定義するには、SQLデータ・コントロールを使用します。データ・コントロールをページに公開する場合、分析データをグラフ、表またはフォームで表示するかどうかを選択でき、バインド・パラメータなどの表示オプションも構成できます。

設計時にJDeveloperを使用してSQLデータ・コントロールを作成できます。データ・コントロールの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

実行時のリソース管理機能が有効な場合は、実行中のFrameworkアプリケーションでもデータ・コントロールを作成できます。Spacesアプリケーションでこの操作を行うには、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のSQLデータ・コントロールの作成に関する項を参照してください。他のFrameworkアプリケーションでデータ・コントロールを作成するには、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアプリケーション・リソースの管理に関する項を参照してください。

Frameworkアプリケーションで分析データベースからデータをフェッチし、分析データを表示するには、SQLデータ・コントロールを使用します。図46-9は、Spacesにおける「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

図46-9 SpacesにおけるSQLデータ・コントロールを作成するためのダイアログ

バインド・パラメータは必要に応じて追加できます。パラメータを追加する場合、指定するパラメータ値に基づいて、データ・ソースから取得されるデータを制限できます。この例はSpacesアプリケーション用なので、図46-10に示すように、アプリケーションの名前はwebcenterに設定し、個人用ページ(ホーム・スペース内のページ)をレポートに含めます。

図46-10 レポート・パラメータの設定

表46-5 レポート・パラメータ

パラメータ

デフォルト値

説明

appname

webcenter

対応するアプリケーション名、Spacesの場合は常にwebcenterです。その他のFrameworkアプリケーションは異なる名前です。

ispersonal

0または1

Spacesの場合、ホーム・スペースに作成されたページをレポートに含めるかどうかを決定します。

dateformat

mm/dd/yyyy hh24

Oracleデータベース内の有効な日付パターン。取得するデータによって異なるため、パターンのすべてのコンポーネントがオプションです。

startdate

01/01/2010

必要なデータの開始日を決定します。

enddate

01/01/2011

必要なデータの終了日を決定します。

図46-9は、グラフとして表示されるカスタム・レポートを示しています。

図46-11 サンプルの分析レポート - 日単位のページ・ヒット

46.3.2 すぐに使用できる分析レポートのSQL文

この項では、カスタム・レポートの出発点として使用できるSQL文について説明します。これらの文は、フィルタの追加やグループ化など、様々な方法でカスタマイズできます。

- 分析SQL: WebCenterポータル・トラフィック

- 分析SQL: ページ・トラフィック

- 分析SQL: ログイン・メトリック

- 分析SQL: スペース・トラフィック

- 分析SQL: スペース・レスポンス時間

- 分析SQL: ポートレット・トラフィック

- 分析SQL: ポートレット・インスタンス・トラフィック

- 分析SQL: ポートレット・レスポンス時間

- 分析SQL: ポートレット・インスタンス・レスポンス時間

- 分析SQL: 検索メトリック

- 分析SQL: ドキュメント・メトリック

- 分析SQL: Wikiメトリック

- 分析SQL: ブログ・メトリック

- 分析SQL: ディスカッション・メトリック

データベース表およびパラメータの詳細なリストは、付録G「WebCenter Portalの分析データベース・スキーマ」を参照してください。

46.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

46.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

46.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

46.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

46.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_

46.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_

46.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_

46.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_

46.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_

46.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

46.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

46.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_

46.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_

46.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_

46.3.3 ユーザー・メトリックについての問合せのサンプル

この項では、ユーザー固有のメトリックについての問合せのサンプルを示します。次のサンプルがあります。

- サンプルSQL: ユーザー・プロパティによるフィルタ処理

- サンプルSQL: ユーザー・プロパティによるグループ化

データベース表とパラメータの詳細なリストおよびユーザー・プロパティの詳細は、付録G「WebCenter Portalの分析データベース・スキーマ」の第G.5項「分析ユーザー・プロパティ」を参照してください。

46.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_

46.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

46.3.4 特定のメトリックについての分析データベース問合せのサンプル

この項では、特定のメトリックについての問合せのサンプルを示します。次のサンプルがあります。

- サンプルSQL: ユーザー・アクティビティ

- サンプルSQL: スペース・アクティビティ

- サンプルSQL: 特定の期間のスペース・アクティビティ

- サンプルSQL: 特定の期間でのサービスのアクティビティ

- サンプルSQL: 検索フレーズ

- サンプルSQL: ページ・ビュー

データベース表およびパラメータの詳細なリストは、付録G「WebCenter Portalの分析データベース・スキーマ」を参照してください。

46.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
...

46.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

46.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

46.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

46.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

46.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

47 リスト・サービスの統合

この章では、リスト・サービスの概要と、リスト・サービスをFrameworkアプリケーションに統合する方法を説明します。次の項が含まれます:

- 第47.1項「リスト・サービスの概要」

- 第47.2項「リスト・サービスの基本構成」

- 第47.3項「リソース・カタログへのリストの追加」

- 第47.4項「リスト・サービスREST APIの使用」

- 第47.5項「リスト・サービスのトラブルシューティング」

47.1 リスト・サービスの概要

この項では、リスト・サービスの機能と要件の概要を説明します。次のサブセクションが含まれます:

- 第47.1.1項「リスト・サービスの理解」

- 第47.1.2項「リスト・サービスの実行時の処理」

47.1.1 リスト・サービスの理解

リスト・サービスを使用すると、実行時にリストを作成し、それらを公開してアプリケーション・ページ上に配置できます。実行時にリソース・カタログで使用可能なリスト・タスク・フローは設計時に作成できます。実行時、ユーザーはタスク・フローをカタログからページに追加し、そのタスク・フローを使用してリストを作成できます。

設計時にコード・スニペットをリソース・カタログに追加することによって、実行時に値が移入されたリストをカタログに追加し、アプリケーション・ページ上に配置できるようになります。

デフォルトでは、シード・ロールAdministratorが割り当てられたユーザーにのみ、リストの管理権限が付与されます。つまり、これらのユーザーは、実行時にリストを作成、編集および削除したり、リスト・データを編集したりできます。デフォルトの権限は、デプロイ時にjazn-data.xml内で変更するか、Enterprise ManagerまたはApplication Policy Managerを使用して変更できます。認可されたユーザーは、この権限を実行時にコンポーネント・レベルで変更できます(詳細は、第23章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」を参照)。サポートされるのは、ロール・ベースの権限のみです。

47.1.2 リスト・サービスの実行時の処理

実行時、リスト・タスク・フローによって、リストの作成とリスト・データの追加に使用できるコントロールが提供されます。これらのコントロールの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリストの作成と管理に関する項およびリスト・データの追加と作成に関する項を参照してください。

ヒント:

ユーザーが実行時にリストを使用できるようにするには、その操作を明示的にユーザーに許可する必要があります。詳細は、第47.2.3項「実行時のユーザーによるリストの使用の有効化」を参照してください。

47.2 リスト・サービスの基本構成

この項では、アプリケーションにリスト・サービスを追加するために必要な手順について説明します。次のサブセクションが含まれます:

- 第47.2.1項「リスト・サービスの接続の設定」

- 第47.2.2項「リスト・サービスの設計時の追加」

- 第47.2.3項「実行時のユーザーによるリストの使用の有効化」

47.2.1 リスト・サービスの接続の設定

リスト・サービスには、WEBCENTERスキーマがインストールされたデータベースへの接続が必要です。リスト・サービスは、すべてのリスト・データをデータベースに格納します。WEBCENTERスキーマがインストールされたデータベースへのデータベース接続の設定の詳細は、第7.2.2項「データベース接続の設定」を参照してください。

注意:

データベースとWEBCENTERスキーマのインストールの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』を参照してください。

47.2.2 リスト・サービスの設計時の追加

この項では、リスト・サービスの基本的な統合について説明します。次のサブセクションが含まれます:

- 第47.2.2.1項「リスト・サービス・タスク・フロー」

- 第47.2.2.2項「リスト・サービスをアプリケーションに追加する方法」

47.2.2.1 リスト・サービス・タスク・フロー

リスト・サービスにはリストという1つのタスクフローが含まれます(図47-1)。

図47-1 リスト・タスク・フローにレンダリングされたリスト

「図47-1 リスト・タスク・フローにレンダリングされたリスト」の説明

リスト・タスク・フローの詳細は、第47.1.2項「リスト・サービスの実行時の処理」を参照してください。

47.2.2.2 リスト・サービスをアプリケーションに追加する方法

リスト・タスク・フローをFrameworkアプリケーションに追加するには:

1. 第7.2項「サービスを利用するためのフレームワーク・アプリケーションの準備」の手順に従い、アプリケーションでセキュリティを実装し、カスタマイズ可能な新しいページを作成します。

2. リスト・タスク・フローの追加先となるJSFページを作成します。

3. ページのセキュリティを構成します。

関連項目:

詳細は、第23章「コンポーザ・コンポーネントのデフォルトのセキュリティ動作の変更」を参照してください。

4. リソース・パレットで、「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」フォルダの順に開きます。

5. 「リスト」タスク・フローをドラッグしてページ上にドロップし、コンテキスト・メニューから「リージョン」を選択します。

6. ページを保存し、ブラウザで実行します。

47.2.3 実行時のユーザーによるリストの使用の有効化

デフォルトでは、アプリケーション管理者のみがリストを使用できます。ユーザーが実行時にリストを表示して使用するには、それらのユーザーに最低でも権限ListPermission:viewが明示的に付与されている必要があります。アプリケーション管理者は、実行時にロール・マネージャ・タスク・フローを通じてこの権限を付与できます。

たとえば管理者が、認証されたすべてのユーザーにリストへの表示アクセス権を付与するには、ロール・マネージャ・タスク・フローでロールAllUsersを作成し、authenticated-roleをメンバーとして追加した後、リストへの表示アクセス権を付与します。

リスト・サービスをアプリケーションに追加する場合は、ロール・マネージャ・タスク・フローも追加する必要があります。アプリケーションが「WebCenter Portal - Frameworkアプリケーション」テンプレートに基づいている場合、ロール・マネージャ・タスク・フローは「管理」ページの「セキュリティ」タブでデフォルトで使用可能です。実行時に次のURLを使用すると、このページに移動できます。

http://host:port/appcontxtroot/faces/admin

注意:

実行時にロール・マネージャを通じて作成および付与するロールと権限は、アプリケーションにパッケージ化されていないため、デプロイ後には提供されません。デプロイ後に、この項で説明したプロビジョニング手順を実行する必要があります。

関連項目:

ロール・マネージャ・タスク・フローの詳細は、第68.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。

47.3 リソース・カタログへのリストの追加

適切に構成されている場合、リソース・カタログは実行時に移入されたリストを使用可能にするため、権限のあるユーザーは編集モードでそれらをページに追加できます。コンポーネントを既存のリソース・カタログに追加する手順またはカスタム・カタログを作成する手順は、第15章「リソース・カタログの作成と管理」で説明されています。この項では、リソース・カタログにリストを追加するために使用するコード・スニペットの例を示します(例47-1)。

注意:

大文字の値は、翻訳された文字列用のメッセージ・キーです。

例47-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>

47.4 リスト・サービスREST APIの使用

Oracle WebCenter Portalで提供されるREST APIを使用すると、提供されたタスク・フローを使用せずに、インタフェースを通じてリスト機能にアクセスできます。リスト・サービスREST APIを使用すると、次のアクションを実行できます。

- スペース内でのリストの使用。リスト群からのリストの取得、新しいリストの追加などがあります

- 1つのリストの使用。リスト・メタデータの取得または更新、リストの削除などがあります

- リスト内の行の使用

- リスト行の使用。行の取得、更新、削除などがあります

- 列の使用。列の追加などがあります

- リスト列の使用。列の取得、更新、削除などがあります

この項では、リスト・サービスに関連付けられたREST APIについて説明します。次のサブセクションが含まれます:

- 第47.4.1項「リストのエントリ・ポイント」

- 第47.4.2項「リスト・リソース・タイプの分類」

- 第47.4.3項「リストのセキュリティに関する考慮事項」

- 第47.4.4項「リストのリソース・タイプ」

関連項目:

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

47.4.1 リストのエントリ・ポイント

Spacesアプリケーションのスペースに含まれるリストのRESTエントリ・ポイントにアクセスするには、特定のスペースに移動して、そのスペース内のリストへのリンクを表示する必要があります。スペース内のどのリストに対しても、次のresourceTypeを持つリンク要素を探します。

urn:oracle:webcenter:space:lists

対応するhrefまたはtemplate要素によって、スペース内のリンクを取得するURIエントリ・ポイントが提供されます。

関連項目:

リソース索引の詳細は、第53.5.1項「リソース索引」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

47.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

47.4.3 リストのセキュリティに関する考慮事項

どのリストREST APIにアクセスする場合でも、RESTサービスにログインする必要があります。その後、基礎となるサービスによって権限が確認されます。

関連項目:

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

47.4.4 リストのリソース・タイプ

この項では、各リソース・タイプについて知っておく必要があるすべての情報を提供します。次のサブセクションが含まれます:

- 第47.4.4.1項「urn:oracle:webcenter:space:lists」

- 第47.4.4.2項「urn:oracle:webcenter:space:list」

- 第47.4.4.3項「urn:oracle:webcenter:space:list:rows」

- 第47.4.4.4項「urn:oracle:webcenter:space:list:row」

- 第47.4.4.5項「urn:oracle:webcenter:space:list:columns」

- 第47.4.4.6項「urn:oracle:webcenter:space:list:column」

47.4.4.1 urn:oracle:webcenter:space:lists

listsレスポンスでは、特定のスペース内のリストを取得する方法(GET)、およびリストをスペースに追加する方法(POST)が提供されます。この項には次のサブセクションが含まれます:

- 第47.4.4.1.1項「listsへのナビゲーション・パス」

- 第47.4.4.1.2項「listsでサポートされるメソッド」

- 第47.4.4.1.3項「listsからリンクされるリソース・タイプ」

47.4.4.1.1 listsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してlistsリソースにアクセスする方法を示します。

urn:oracle:webcenter:resourceindex
urn:oracle:webcenter:spaces
urn:oracle:webcenter:space:resourceindex
urn:oracle:webcenter:space:lists

47.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

- 複数の条件をセミコロン(;)で区切って指定できます。

- 検索可能な属性(表47-1)

表47-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>

- 書込み可能要素(表47-2)

表47-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>

- 取得される要素(表47-3)

表47-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>

47.4.4.1.3 listsからリンクされるリソース・タイプ

表47-4は、クライアントがlistsリソースからリンクできるリソース・タイプをリストしています。

表47-4 listsからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:lists

urn:oracle:webcenter:space:list

47.4.4.2 urn:oracle:webcenter:space:list

listレスポンスでは、個々のリストを取得、更新および削除する方法が提供されます。この項には次のサブセクションが含まれます:

- 第47.4.4.2.1項「listへのナビゲーション・パス」

- 第47.4.4.2.2項「listでサポートされるメソッド」

- 第47.4.4.2.3項「listからリンクされるリソース・タイプ」

47.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

47.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>

- 取得される要素(表47-5)

表47-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の書込み可能要素(表47-6)

表47-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]

- レスポンス本体: なし

47.4.4.2.3 listからリンクされるリソース・タイプ

表47-7は、クライアントがlistリソースからリンクできるリソース・タイプを示しています。

表47-7 listからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list

urn:oracle:webcenter:space:list:rows

urn:oracle:webcenter:space:list:columns

47.4.4.3 urn:oracle:webcenter:space:list:rows

rowsレスポンスでは、列をリストから取得またはリストに追加する方法が提供されます。この項には次のサブセクションが含まれます:

- 第47.4.4.3.1項「rowsへのナビゲーション・パス」

- 第47.4.4.3.2項「rowsでサポートされるメソッド」

- 第47.4.4.3.3項「rowsからリンクされるリソース・タイプ」

47.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

47.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>

- 書込み可能要素(表47-8)

表47-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>

- 取得される要素(表47-9)

表47-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>

47.4.4.3.3 rowsからリンクされるリソース・タイプ

表47-10は、クライアントがrowsリソースからリンクできるリソース・タイプを示しています。

表47-10 rowsからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list.rows

parent

urn:oracle:webcenter:space:list

urn:oracle:webcenter:space:list:row

47.4.4.4 urn:oracle:webcenter:space:list:row

rowレスポンスでは、個々のリスト行を取得、追加および削除する方法が提供されます。この項には次のサブセクションが含まれます:

- 第47.4.4.4.1項「rowへのナビゲーション・パス」

- 第47.4.4.4.2項「rowでサポートされるメソッド」

- 第47.4.4.4.3項「rowからリンクされるリソース・タイプ」

47.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

47.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>

- 取得される要素(表47-11)

表47-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>

- 書込み可能要素(表47-12)

表47-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]

- レスポンス本体: なし

47.4.4.4.3 rowからリンクされるリソース・タイプ

表47-13は、クライアントがrowリソースからリンクできるリソース・タイプを示しています。

表47-13 rowからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list:row

47.4.4.5 urn:oracle:webcenter:space:list:columns

columnsレスポンスでは、リスト列を取得または追加する方法が提供されます。この項には次のサブセクションが含まれます:

- 第47.4.4.5.1項「columnsへのナビゲーション・パス」

- 第47.4.4.5.2項「columnsでサポートされるメソッド」

- 第47.4.4.5.3項「columnsからリンクされるリソース・タイプ」

47.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

47.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>

- 書込み可能要素(表47-14)

表47-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>

- 取得される要素(表47-15)

表47-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>

47.4.4.5.3 columnsからリンクされるリソース・タイプ

表47-16は、クライアントがcolumnsリソースからリンクできるリソース・タイプを示しています。

表47-16 columnsからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list.columns

parent

urn:oracle:webcenter:space:list

urn:oracle:webcenter:space:list:column

47.4.4.6 urn:oracle:webcenter:space:list:column

columnレスポンスでは、個々のリスト列を取得、追加および削除する方法が提供されます。この項には次のサブセクションが含まれます:

- 第47.4.4.6.1項「columnへのナビゲーション・パス」

- 第47.4.4.6.2項「columnでサポートされるメソッド」

- 第47.4.4.6.3項「columnからリンクされるリソース・タイプ」

47.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

47.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>

- 取得される要素(表47-17)

表47-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>

- 書込み可能要素(表47-18)

表47-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]

- レスポンス本体: なし

47.4.4.6.3 columnからリンクされるリソース・タイプ

表47-19は、クライアントがcolumnリソースからリンクできるリソース・タイプを示しています。

表47-19 columnからリンクされるリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:space:list:column

47.5 リスト・サービスのトラブルシューティング

問題

リスト・タスク・フローで、WebCenter Portalのリポジトリが使用できないことを示すエラーが発生します。

解決方法

データベース接続が構成されていない可能性があります。詳細は、第7.2.2項「データベース接続の設定」を参照してください。

問題

401 Unauthorizedエラーが発生します。

解決方法

アプリケーションのセキュリティが設定されていない可能性があります。また、試行されたタスクの実行に必要な権限が付与されていなかったことも考えられます。

48 通知の統合

通知は、サービス・オブジェクトおよびアプリケーション・オブジェクトへのサブスクライブの手段を提供するものであり、これらのオブジェクトが変更されると、選択されている1つ以上のメッセージ・チャネルを通じて通知を受信します。この章では、Frameworkアプリケーションに通知を統合する方法について説明します。次の項が含まれます:

- 第48.1項「通知の概要」

- 第48.2項「通知の基本構成」

- 第48.3項「通知の詳細情報」

48.1 通知の概要

この項では、通知の概要を説明します。次のサブセクションが含まれます:

- 第48.1.1項「通知の理解」

- 第48.1.2項「通知の要件」

- 第48.1.3項「実行時の通知の処理」

48.1.1 通知の理解

通知は、サブスクライブされているサービスおよびオブジェクトに関する通知を異なるメッセージ・チャネルを通じてトリガーする、自動的な手段を提供します。ユーザーがサブスクライブしているアプリケーション・サービスおよびオブジェクトが変更されると、メッセージがトリガーされます。たとえば、ユーザーがドキュメントにサブスクライブすると、別のユーザーがこのドキュメントを変更したときに通知を受信します。

メッセージ・チャネルには、使用できるメッセージ・サーバーやアプリケーション管理者による通知の構成方法に応じて、電話テキスト(SMS)、メールまたはワークリストが含まれます。たとえば、特定のドキュメントが変更されたときにメール・メッセージ、他のユーザーが特定のディスカッション・トピックに応答したときにテキスト・メッセージ、コネクションの招待を受けたときはワークリスト・アラートを受信できます。すべてのメッセージにはリンクが含まれており、ユーザーは該当の変更に移動できます。

参加しているサービスとオブジェクトには、ピープル・コネクション(コネクション、メッセージ・ボードおよびフィードバック)、ディスカッションおよびドキュメント(Wikiとブログを含む)があります。

表48-1に、通知をトリガーするアクティビティのタイプと、サブスクリプションが作成されるレベルを示します。

表48-1 通知をトリガーできるアクティビティ

アクティビティ

レベル

ユーザーがコネクションの招待を送信する

アプリケーション

ユーザーがメッセージをメッセージ・ボードに投稿する

アプリケーション

ユーザーがメッセージ・ボードの投稿(メッセージ・ボード上に明示的に設定されているメッセージで、パブリッシャからアクティビティ・ストリームに追加されたものではない)をお気に入り登録する

アプリケーション

ユーザーがメッセージ・ボードの投稿(メッセージ・ボード上に明示的に設定されているメッセージで、パブリッシャからアクティビティ・ストリームに追加されたものではない)にコメントする

アプリケーション

ユーザーがフィードバックを投稿する

アプリケーション

ユーザーがディスカッション・トピックに応答する

オブジェクト

ユーザーがディスカッション・トピックにコメントする

オブジェクト

ユーザーがディスカッション・トピックを削除する

オブジェクト

ユーザーがドキュメントについてコメントする

オブジェクト

ユーザーがドキュメントをお気に入り登録する

オブジェクト

ユーザーがドキュメントを更新する

オブジェクト

ユーザーがドキュメントを削除する

オブジェクト

ユーザーがWikiドキュメントについてコメントする

オブジェクト

ユーザーがWikiドキュメントをお気に入り登録する

オブジェクト

ユーザーがWikiドキュメントを更新する

オブジェクト

ユーザーがWikiドキュメントを削除する

オブジェクト

ユーザーがブログ・エントリでコメントする

オブジェクト

ユーザーがブログ・エントリをお気に入り登録する

オブジェクト

ユーザーがブログ・エントリを更新する

オブジェクト

ユーザーがブログ・エントリを削除する

オブジェクト

通知は、User Messaging Service (UMS)やメール・サービスなど、WebCenterで使用可能なメッセージ配信プラットフォームを利用して、生成するメッセージを配信します。メール・サービスはデフォルトのメッセージ配信メカニズムを備えていますが、ワークリスト・サービスを通じて提供されるBPEL接続を使用すると、ユーザーにとってチャネルの選択肢が電話テキスト、メールおよびワークリストと広がります。

すべてのユーザーを対象とするアプリケーションレベルのサブスクリプションのデフォルトは、XML構成ファイル(notification-service-settings.xml)によって設定できます。このデフォルト・ファイルの独自バージョンを作成して使用すると、この目的でデフォルトで提供されている同じ名前のファイルが置き換えられます。

48.1.2 通知の要件

アプリケーションが通知サービスと連携できるためには、アプリケーションのadf-config.xmlファイル内で通知ネームスペースを指定する必要があります。詳細は、第48.2.1項「通知ネームスペースの追加」を参照してください。

サブスクリプション機能はこれをサポートするサービスに組み込まれており、追加の構成は必要はありません。

通知メッセージ機能は、構成されているメールまたはワークリスト接続の存在を利用して、通知メッセージの配信を可能にします。通知メッセージでは、ワークリスト・サービス用に構成されているBPELサーバーまたはメール・サービス用に構成されているメール・サーバーを使用するように、アプリケーションを明示的に構成する必要があります。詳細は、第48.2.2項「メール・サーバーへの通知接続の作成」および第48.2.3項「BPELサーバーへの通知接続の作成」を参照してください。

アプリケーションレベルのサブスクリプション・プリファレンスとして、すべてのユーザーを対象とするアプリケーション・デフォルトを設定するには、デフォルトのnotification-service-settings.xmlファイルの独自バージョンを作成する必要があります。詳細は、第48.2.4項「通知のアプリケーション・デフォルトの設定」を参照してください。

通知が正しく動作するためには、保護されたページにそのタスク・フローがあることが必要です。これは、サブスクライブしているアクションを追跡およびレポートするには、現在のユーザーが認証を通じて認識される必要があるためです。通知が含まれるページまたはアプリケーションが保護されていない場合、例外エラーが発生します。詳細は、第48.2.6項「通知のセキュリティの設定」を参照してください。

48.1.3 実行時の通知の処理

実行時に、ユーザーはUMSプリファレンスを通じて優先するメッセージ・チャネルを設定します。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のメッセージ・チャネルとフィルタの確立および管理に関する項を参照してください。

注意:

アプリケーションを設計する際、ユーザーがUMSプリファレンスにアクセスできるようにする必要があります。たとえば、リンクをUIに追加したり、リンクを含むワークリスト・タスク・フローをユーザーに示すことができます。

ユーザーは、通知タスク・フローのサブスクリプション・プリファレンスを通じてアプリケーションレベルのサブスクリプションを確立します(図48-1)。

図48-1 サブスクリプション・プリファレンス・タスク・フロー

「図48-1 サブスクリプション・プリファレンス・タスク・フロー」の説明

オブジェクトレベルのサブスクリプションは、オブジェクトに直接サブスクライブすることによって設定します。

ユーザーは、サブスクリプション・プリファレンス・タスク・フローを通じてアプリケーションレベルのサブスクリプションを管理し、通知タスク・フローのサブスクリプション・ビューアを通じてオブジェクトレベルのサブスクリプションを管理します(図48-2)。

図48-2 サブスクリプション・ビューア・タスク・フロー

「図48-2 サブスクリプション・ビューア・タスク・フロー」の説明

関連項目:

通知タスク・フローの詳細は、第48.2.5.1項「通知タスク・フロー」を参照してください。

48.2 通知の基本構成

通知は、メールまたはワークリスト・サービス接続を利用して、ユーザー通知のメッセージ・チャネルを提供します。メール・サーバーを使用する予定の場合、メール・サービス用のメール・サーバーへの接続が必要ですが、通知用の追加の構成は必要ありません。ワークリスト・サービスが使用するのと同じBPEL接続を通知で使用する予定の場合は、この構成をadf-config.xmlファイルに追加する必要があります。

この項では、これらの接続と構成の概要およびアプリケーション・ページに通知タスク・フローを追加するプロセスについて説明します。次のサブセクションが含まれます:

- 第48.2.1項「通知ネームスペースの追加」

- 第48.2.2項「メール・サーバーへの通知接続の作成」

- 第48.2.3項「BPELサーバーへの通知接続の作成」

- 第48.2.4項「通知のアプリケーション・デフォルトの設定」

- 第48.2.5項「通知タスク・フローのアプリケーションへの追加」

- 第48.2.6項「通知のセキュリティの設定」

48.2.1 通知ネームスペースの追加

アプリケーションで通知ネームスペースを確立するには、次のコードをファイル先頭のadf-config要素に追加します(例48-1)。

ヒント:

adf-config.xmlファイルは、「アプリケーション・リソース」パネルで、「ディスクリプタ」の下のADF META-INFフォルダにあります。

例48-1 通知構成を認識するためのアプリケーションの構成

xmlns:notificationC="http://xmlns.oracle.com/webcenter/notification/config"

例(太字) (図48-2):

例48-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"
…

48.2.2 メール・サーバーへの通知接続の作成

ユーザーがメール・メッセージ・チャネルを選択できるためには、メール・サーバーへの接続を構成する必要があります(詳細は、第35.2.2項「メール・サービス用接続の設定」を参照)。接続が確立されたら、adf-config.xmlファイルに次のエントリを追加して、メール・サーバーと通知を関連付けます(例48-3)。

例48-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は構成されたメール・サーバーの名前です。

例48-4はコード・サンプルで、前述のコード・サンプルが所定の位置にあります(太字)。

例48-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">
…

48.2.3 BPELサーバーへの通知接続の作成

ユーザーにメール、電話テキストまたはワークリストのメッセージ・チャネルを選択できるオプションを提供するには、BPELサーバーへの接続を構成する必要があります(詳細は、第50.3.1項「ワークリスト・サービスの接続の設定」を参照)。通知は、ワークリスト・サービス用に指定されているBPELサーバーを利用して、生成する通知のメッセージ・チャネルを複数提供します。BPELサーバーへの接続が確立された後、BPELサーバーと通知を関連付けるため、次のエントリをadf-config.xmlファイルに追加します(例48-5)。

例48-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つのドライバに一致する必要があります。

例48-6はコード・サンプルで、前述のコード・サンプルが所定の位置にあります(太字)。

例48-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">
…

48.2.4 通知のアプリケーション・デフォルトの設定

この項では、通知のすべてのユーザーが対象となる、アプリケーションレベルのデフォルトを設定するために使用するXMLファイルについて説明します。次のサブセクションが含まれます:

- 第48.2.4.1項「サブスクリプション・デフォルトに関する必要な知識」

- 第48.2.4.2項「通知のサブスクリプション・デフォルトの設定」

48.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)。

これらの属性が連携して、サブスクリプション・プリファレンス・タスク・フローの初期状態が決まります。

表48-2は、カスタムの管理者レベルのサブスクリプション設定が、サブスクリプション・プリファレンス・タスク・フローの外観に及ぼす影響を示しています。

表48-2 管理者デフォルトがサブスクリプション・プリファレンスに及ぼす影響

subscription-enabled脚注 1

end-user-configurable

プリファレンスのオプション

True

True

通常のレンダリング、チェック・ボックスの選択

True

False

グレー表示、チェック・ボックスの選択

False

True

通常のレンダリング、チェック・ボックスの選択解除

False

False

非表示、チェック・ボックスの非表示

脚注 1 subscription-enabled属性は、サブスクリプション機能全体を有効または無効にするのではなく、サブスクリプションの初期状態のみを設定します。

ヒント:

大部分の通知において最も一般的なシナリオは、False、True、つまり通常のレンダリング、チェック・ボックスの選択解除です。

表48-3は、アプリケーションレベルの通知をトリガーできるアクションの種類と、関連するサービスIDを示しています。

表48-3 通知をトリガーできるアプリケーションレベルのアクティビティ

アクティビティ

関連するサービスID

ユーザーがコネクションの招待を送信する

oracle.webcenter.peopleconnections.connections

ユーザーがメッセージをメッセージ・ボードに投稿する

oracle.webcenter.peopleconnections.wall

別のユーザーのメッセージ・ボードに行った投稿をユーザーがお気に入り登録する

oracle.webcenter.peopleconnections.wall

別のユーザーのメッセージ・ボードに行った投稿にユーザーがコメントする

oracle.webcenter.peopleconnections.wall

ユーザーがフィードバックを投稿する

oracle.webcenter.peopleconnections.kudos

48.2.4.2 通知のサブスクリプション・デフォルトの設定

アプリケーションレベルのサブスクリプション・プリファレンスのデフォルト値を設定するには:

1. パスに/oracle/webcenter/notificationが含まれるディレクトリに移動し、フォルダcustomを作成します。

ヒント:

パスに/oracle/webcenter/notification/customが含まれているかぎり、ディレクトリ構造は任意のディレクトリで開始または終了できます。

2. customフォルダまたは/oracle/webcenter/notification/custom/の下の任意のサブフォルダで、ファイルnotification-service-settings.xmlを作成します。

3. XMLファイルに、アプリケーションレベルのすべてのサブスクリプション・オプションの値を入力します。
例48-7は、アプリケーション全体のサブスクリプション・プリファレンス設定ファイルのサンプル・コンテンツと、必要な各オプションの例を示しています。

例48-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で指定される場所の下にあるパスとファイルです。

表48-4にサービスID oracle.webcenter.peopleconnections.connectionsの設定の様々な組合せを示します。

表48-4 接続におけるサブスクリプション構成の影響

subscription-enabled

end-user-configurable

影響

true

true

- 別のユーザーがサブスクライブ・ユーザーにコネクションの招待を送信すると、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できます。

true

false

- 別のユーザーがサブスクライブ・ユーザーにコネクションの招待を送信すると、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できません。脚注 1

false

true

- 別のユーザーがサブスクライブ・ユーザーにコネクションの招待を送信する際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- ユーザーはこのデフォルトを変更できます。

false

false

- 別のユーザーがサブスクライブ・ユーザーにコネクションの招待を送信する際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- このデフォルト値を変更するためのオプションは非表示にされます。

脚注 1 これは初期設定のデフォルトです

表48-5は、サービスID oracle.webcenter.peopleconnections.wallにおける、設定の様々な組合せの影響を示しています。

表48-5 メッセージ・ボードにおけるサブスクリプション構成の影響

subscription-enabled

end-user-configurable

影響

true

true

- 別のユーザーがメッセージをメッセージ・ボードで投稿する際、メッセージ・ボードの投稿をお気に入り登録する際、またはメッセージ・ボードの投稿に対してコメントする際、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できます。

true

false

- 別のユーザーがメッセージをメッセージ・ボードで投稿する際、メッセージ・ボードの投稿をお気に入り登録する際、またはメッセージ・ボードの投稿に対してコメントする際、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できません。

false

true

- 別のユーザーがメッセージをメッセージ・ボードで投稿する際、メッセージ・ボードの投稿をお気に入り登録する際、またはメッセージ・ボードの投稿に対してコメントする際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- ユーザーはこのデフォルトを変更できます。

false

false

- 別のユーザーがメッセージをメッセージ・ボードで投稿する際、メッセージ・ボードの投稿をお気に入り登録する際、またはメッセージ・ボードの投稿に対してコメントする際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- このデフォルト値を変更するためのオプションは非表示にされます。

表48-6は、サービスID oracle.webcenter.peopleconnections.kudosにおける、設定の様々な組合せの影響を示しています。

表48-6 フィードバックにおけるサブスクリプション構成の影響

subscription-enabled

end-user-configurable

影響

true

true

- 別のユーザーがサブスクライブ・ユーザーのフィードバックを投稿すると、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できます。

true

false

- 別のユーザーがサブスクライブ・ユーザーのフィードバックを投稿すると、そのサブスクライブ・ユーザーは通知メッセージを受信します。

- ユーザーはこのデフォルトを変更できません。

false

true

- 別のユーザーがサブスクライブ・ユーザーのフィードバックを投稿する際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- ユーザーはこのデフォルトを変更できます。

false

false

- 別のユーザーがサブスクライブ・ユーザーのフィードバックを投稿する際、そのサブスクライブ・ユーザーは通知メッセージを受信しません。

- このデフォルト値を変更するためのオプションは非表示にされます。

48.2.5 アプリケーションへの通知タスク・フローの追加

この項では、通知タスク・フローの概要を説明し、これをアプリケーション・ページに追加する方法について説明します。次のサブセクションが含まれます:

- 第48.2.5.1項「通知タスク・フロー」

- 第48.2.5.2項「通知タスク・フローをページに追加する方法」

48.2.5.1 通知タスク・フロー

通知サービスは、ユーザー・サブスクリプションを管理する2つのタスク・フローを公開しています。

- サブスクリプション・プリファレンスには、アプリケーションレベルのサブスクリプションの適用、表示およびサブスクライブ解除を行うためのコントロールがあります(図48-3)。

図48-3 サブスクリプション・プリファレンス・タスク・フロー

「図48-3 サブスクリプション・プリファレンス・タスク・フロー」の説明

- サブスクリプション・ビューアは、オブジェクトレベルのサブスクリプションの表示とサブスクライブ解除を制御します(図48-4)。

図48-4 サブスクリプション・ビューア・タスク・フロー

「図48-4 サブスクリプション・ビューア・タスク・フロー」の説明

48.2.5.2 通知タスク・フローをページに追加する方法

通知タスク・フローをページに追加するには:

1. 第7.2.1項「サービスを利用するようにアプリケーションを準備する方法」の手順に従い、セキュリティを実装しカスタマイズ可能ページをアプリケーションで作成します。

2. タスク・フローを追加するページを開きます。

3. リソース・パレットの「カタログ」ペインで、「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」フォルダを開きます。

4. ページ・リージョンにタスク・フローをドラッグし、ポップアップ・リストから「リージョン」を選択します。

5. 「ADFライブラリ追加の確認」ダイアログで、「ライブラリの追加」をクリックして、コンポーネントに必要なすべてのライブラリを追加します。

6. サブスクリプション・プリファレンスの場合のみ、必要に応じて、「タスク・フロー・バインディングの編集」ダイアログで、入力パラメータ・マップへのパスおよびタスク・フローの入力パラメータの値を指定し、「OK」をクリックします。

関連項目:

サブスクリプション・プリファレンス・タスク・フローの入力パラメータの詳細は、第48.2.5.3項「サブスクリプション・プリファレンス・タスク・フローの入力パラメータ」を参照してください。

タスク・フローがページで表示されます。たとえば、「ソース」ビューに、例48-8に示されているコンテンツが表示されます。

例48-8 サブスクリプション・プリファレンス・タスク・フローのソース・ビュー・コンテンツ

<af:region value="#{bindings.SubscriptionPreferences1.regionModel}" id="r1"/>

7. 「フォーム要素追加の確認」ダイアログで、「いいえ」をクリックして、タスク・フローのフォーム要素が折り返さないようにします。

8. プロジェクトを保存し、ページをブラウザで実行します。
ブラウザにタスク・フローが表示されます(図48-5)。

図48-5 サブスクリプション・プリファレンス・タスク・フロー

「図48-5 サブスクリプション・プリファレンス・タスク・フロー」の説明

48.2.5.3 サブスクリプション・プリファレンス・タスク・フローの入力パラメータ

サブスクリプション・プリファレンス・タスク・フローの入力パラメータを使用すると、指定のタスク・フロー・インスタンスの動作を制御できます。表48-7は、このタスク・フローに関連する入力パラメータとその説明を示しています。

図48-7 サブスクリプション・プリファレンス・タスク・フローの入力パラメータ

入力パラメータ

説明

hideActions

タスク・フローへの「保存」ボタンおよび「リフレッシュ」アイコンの表示または非表示を切り替えます

- ${true}: これらのコントロールを表示しない

- ${false}: 表示する(デフォルト)

scopeName

サブスクリプション・プリファレンスが設定されるスコープの名前。

48.2.6 通知のセキュリティの設定

通知では、ユーザーの通知設定を保持し、サブスクライブされているサービスおよびオブジェクトでのユーザーのアクティビティを追跡するために、ユーザーのアイデンティティを理解している必要があります。そのためには、少なくともユーザーを認証するようにアプリケーションを構成して、パーソナライズとユーザー・プリファレンスを目的とする個別のアイデンティティを持たせる必要があります。

Frameworkアプリケーションで基本的なセキュリティ・ソリューションを実装する方法の詳細は、第68.3項「ADFセキュリティの構成」を参照してください。Frameworkアプリケーションに完全なセキュリティ・ソリューションを実装する方法の詳細は、第68章「WebCenter Portal: Frameworkアプリケーションの保護」を参照してください。

ADFセキュリティをアプリケーション用に構成すると、jazn-data.xmlファイルを開いて、サンプル・ユーザーの権限を各タスク・フロー用に変更できます。ADFセキュリティ・ポリシー・エディタを開くには、「アプリケーション・リソース」パネルでファイルを見つけて、その名前をダブルクリックします。このビューで権限を構成することもできます。

注意:

通知のユーザー権限を正しく付与するには、デプロイメント後にユーザー権限を構成する必要があります。

48.3 通知の詳細情報

この項では、通知で使用できるAPIについて説明します。次のサブセクションが含まれます:

- 第48.3.1項「通知Java APIの使用」

- 第48.3.2項「通知データ・コントロールの使用」

48.3.1 通知Java APIの使用

この項では、通知Java APIの概要を説明します。次のサブセクションが含まれます:

- 第48.3.1.1項「通知Java APIを使用するために必要な構成設定」

- 第48.3.1.2項「通知Java APIの概要」

- 第48.3.1.3項「通知Java APIを使用するようにアプリケーションを設定する方法」

関連項目:

通知Java APIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

48.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にこれらのエントリがない場合は、任意のテキスト・エディタを使用してこれらを追加できます。

48.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リファレンスを参照してください。

48.3.1.3 通知Java APIを使用するようにアプリケーションを設定する方法

通知Java APIを使用するには、JDeveloperアプリケーションにWebCenter Portal拡張機能が存在している必要があります。JDeveloperで、「ヘルプ」→「バージョン情報」メニューに進み、「拡張機能」タブをクリックします。図48-6に示されているサービスを探します。WebCenter Portal拡張機能の追加の詳細は、第3章「開発環境の準備」を参照してください。

図48-6 JDeveloper拡張機能

WebCenter Portal拡張機能に通知が含まれていることを確認した後、通知ライブラリがない場合は、これをプロジェクトに追加する必要があります。

プロジェクトに通知ライブラリを追加するには:

1. プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択し、「ライブラリとクラスパス」を選択します。

2. 「ライブラリの追加」をクリックし、「WebCenter通知サービス」ライブラリおよび「WebCenter通知サービス・ビュー」ライブラリを選択します(図48-7)。

3. 「OK」をクリックします。

図48-7 「プロジェクト・プロパティ」内の「ライブラリとクラスパス」

4. 「OK」をクリックします。

48.3.2 通知データ・コントロールの使用

通知にはデータ・コントロールがあり、これを使用すると、サブスクリプション管理機能を独自に視覚化できます。この項では、通知サブスクリプション・データ・コントロールの概要を説明し、サポートされているメソッド、属性およびクラスについて説明します。

関連項目:

Frameworkアプリケーションにおけるデータ・コントロールの使用の詳細は、第7.1.3項「WebCenter Portalのデータ・コントロールの使用」を参照してください。

この項には次のサブセクションが含まれます:

- 第48.3.2.1項「プロジェクトへのデータ・コントロールの追加」

- 第48.3.2.2項「通知サブスクリプション・データ・コントロールの理解」

- 第48.3.2.3項「通知サブスクリプション・データ・コントロールのメソッドと属性」

- 第48.3.2.4項「通知サブスクリプション・データ・コントロールのクラス」

48.3.2.1 プロジェクトへのデータ・コントロールの追加

プロジェクトにデータ・コントロールを追加するには、「リソース・パレット」で右クリックし、ポップアップ・メニューから「プロジェクトに追加」を選択します。追加されると、アプリケーション・ナビゲータの「データ・コントロール」パネルで展開して、データ・コントロールのメソッドと属性を参照できます。

アプリケーション・ページにデータ・コントロールを追加するには、「データ・コントロール」パネルからページにデータ・コントロールをドラッグします。

関連項目:

Frameworkアプリケーションにおけるデータ・コントロールの使用の詳細は、第7.1.3項「WebCenter Portalのデータ・コントロールの使用」を参照してください。

48.3.2.2 通知サブスクリプション・データ・コントロールの理解

通知サブスクリプション・データ・コントロールを使用すると、要件に不十分な場合にサブスクリプション・プリファレンスおよびサブスクリプション・ビューア・タスク・フローに相当するカスタムUIを作成できます。

データ・コントロールは、アプリケーションレベルのサブスクリプション・プリファレンスを追加する手段として使用できます。たとえば、アプリケーション内で独自のプリファレンス・メカニズムが開発されている場合、サブスクリプション・プリファレンス・タスク・フローを直接使用するのではなく、データ・コントロールを使用することで、既存のメカニズムにサブスクリプション・プリファレンスを追加できます。また、現在のユーザーのオブジェクトレベルのサブスクリプションがすべてリストされる、カスタムのサブスクリプション・ビューアUIを作成できます。

48.3.2.3 通知サブスクリプション・データ・コントロールのメソッドと属性

この項では、通知サブスクリプション・データ・コントロールで公開されるメソッドについて説明します。次のサブセクションが含まれます:

- 第48.3.2.3.1項「メソッド: getUserSubscriptionPreferences」

- 第48.3.2.3.2項「メソッド: getScopeSubscriptionPreferences」

- 第48.3.2.3.3項「メソッド: saveUserSubscriptionPreferences」

- 第48.3.2.3.4項「メソッド: saveScopeSubscriptionPreferences」

- 第48.3.2.3.5項「メソッド: getSubscriptions」

- 第48.3.2.3.6項「メソッド: unsubscribe」

48.3.2.3.1 メソッド: getUserSubscriptionPreferences

このメソッドは、現在のユーザーのアプリケーションレベルのサブスクリプション・プリファレンスを返します。

入力パラメータ

なし

戻り値

SubscriptionPreferenceオブジェクトのコレクションを返します。SubscriptionPreferenceオブジェクトは、各サービスのユーザーのプリファレンスを表します。

48.3.2.3.2 メソッド: getScopeSubscriptionPreferences

このメソッドは、現在のユーザーのスコープレベルのサブスクリプション・プリファレンスを返します。

このメソッドは、主に、Spacesアプリケーションで役立ちます。Frameworkアプリケーションの場合は、スコープは常にデフォルト・スコープ、つまり、アプリケーションであることが期待されます。デフォルト・スコープの場合、このメソッドはアプリケーションレベルのプリファレンスを返します。

入力パラメータ

入力パラメータscopeGuidには、Stringタイプの値を指定します。ユーザーのスコープレベルのプリファレンスが返されるスコープのGUIDを値により指定します。Spacesアプリケーションの場合、ここで参照されるスコープはspaceと同等です。

戻り値

SubscriptionPreferenceオブジェクトのコレクションを返します。各オブジェクトは、指定されたスコープ内での、各サービスに対する現在のユーザーのサブスクリプション・プリファレンスを表します。

48.3.2.3.3 メソッド: saveUserSubscriptionPreferences

アプリケーションでこのメソッドを使用すると、ユーザーのアプリケーションレベルのプリファレンスへの変更をコミットし、保存できます。たとえば、ユーザーが使用可能なすべてのサービスにサブスクライブしている場合、このメソッドをUI上の適切なコンポーネント(「適用」ボタンなど)にバインドすることによって、これらの変更をコミットできます。

入力パラメータ

なし

戻り値

なし

48.3.2.3.4 メソッド: saveScopeSubscriptionPreferences

アプリケーションでこのメソッドを使用すると、ユーザーのスコープレベルのプリファレンスへの変更をコミットし、保存できます。たとえば、ユーザーが指定のスコープ内で使用可能なすべてのサービスにサブスクライブしている場合、このメソッドをUI上の適切なコンポーネント(「適用」ボタンなど)にバインドすることによって、これらの変更をコミットできます。

入力パラメータ

入力パラメータscopeGUIDには、Stringタイプの値を指定します。値は、変更後のプリファレンスが保存されるスコープのGUIDを指定します。

戻り値

なし

48.3.2.3.5 メソッド: getSubscriptions

現在のユーザーのオブジェクトレベルのサブスクリプションのリストを返す、主要なメソッドです。このメソッドを使用して、ユーザーのオブジェクトレベルのサブスクリプションがすべて表示される、カスタムのサブスクリプション・ビューアUIを作成できます。

入力パラメータ

表48-8は、このメソッドでサポートされる入力パラメータとその説明を示しています。

表48-8 メソッドgetSubscriptionsでサポートされる入力パラメータ

入力パラメータ

説明

FilterOption

ユーザーのサブスクリプションの問合せ用のフィルタ基準が含まれるオブジェクト。FilterOptionでは、スペース名(Spacesのみ)およびオブジェクト名に基づくフィルタ処理がサポートされます。

SortOption

サブスクリプションの問合せ用のソートまたは順序付けの条件が含まれるオブジェクト。オブジェクト名、スコープ名(Spacesのみ)またはサブスクリプションの作成日でのソートがサポートされます。

offset

この入力パラメータは整数を値として取ります。サブスクリプションの問合せ用のオフセット。これは、通常、ページ区切りが含まれる結果セットをフェッチするときに使用されます。

fetchSize

この入力パラメータは整数を値として取ります。1回のコールで返される最大行数。

戻り値

フィルタ基準およびソート・オプションで指定された順序の他の入力パラメータに一致する、Subscriptionオブジェクトのコレクションを返します。

48.3.2.3.6 メソッド: unsubscribe

特定のサブスクリプションのサブスクライブ解除または削除で使用されます。このメソッドは、通常、オブジェクトレベルのサブスクリプションが公開されるサブスクリプション・ビューアUIに、サブスクライブ解除のアクションを追加するときに使用されます。

アプリケーションレベルとスペースレベルまたはいずれかのレベルでの特定のサービスからのサブスクライブ解除は、SubscriptionPreference内に適切なフラグを設定し、それを前述の適切なsave*()メソッドで保存することによって実現できます。Unsubscribeメソッドは、サブスクリプション・ビューア機能で役立ちます。

入力パラメータ

表48-9は、このメソッドでサポートされる入力パラメータとその説明を示しています。

表48-9 メソッドUnsubscribeでサポートされる入力パラメータ

入力パラメータ

説明

scopeGuid

Stringタイプの値を指定します。ユーザーのスコープレベルのプリファレンスが返されるスコープのGUIDを値により指定します。Spacesアプリケーションの場合、ここで参照されるスコープはspaceと同等です。

serviceId

サブスクライブ解除されるサービスのID

有効なサービスIDには、次のものが含まれます。

- oracle.webcenter.collab.forum

- oracle.webcenter.doclib

objectId

サブスクライブ解除されるオブジェクトのGUID。

戻り値

なし

48.3.2.4 通知サブスクリプション・データ・コントロールのクラス

通知サブスクリプション・データ・コントロールは、戻り値として2つのクラスを公開しています。

- SubscriptionPreference

- Subscription

48.3.2.4.1 SubscriptionPreference

クラスSubscriptionPreferenceは、アプリケーションまたはスコープレベルのサブスクリプションをプリファレンスとして表し、対応するサービス(データ・コントロール上でsaveコールが続く)のサブスクリプションの設定および設定解除を可能にします。

表48-10は、SubscriptionPreferenceクラスに関連するプロパティとその説明を示しています。

表48-10 SubscriptionPreferenceクラスに関連するプロパティ

プロパティ

説明

hintsText

通知を生成するサービス内ですべての適用可能アクティビティ(説明)を連結したものが含まれる文字列

UIに表示してユーザーのサブスクライブ先を示す場合に役立ちます。

serviceIcon

サービスのアイコン

serviceId

対応するサービスのID

serviceName

サービスの表示名

subscriptionEnabled

サブスクリプションが有効かどうかを指定するフラグ

この属性には、UI上での選択/選択解除の操作をサポートするセッターもあります。

userOverrideAllowed

ユーザーがデフォルト値を上書きできるかどうかを指定するフラグ

48.3.2.4.2 Subscription

クラスSubscriptionは純粋に読取り専用であり、スペースレベル(Spacesのみ)およびオブジェクトレベルのサブスクリプションを表します。

表48-11は、Subscriptionクラスに関連するプロパティとその説明を示しています。

表48-11 Subscriptionクラスに関連するプロパティ

プロパティ

説明

creationDate

このサブスクリプションが作成された日時

objectId

オブジェクトレベルのサブスクリプションを表す場合はオブジェクトのID、それ以外の場合はnull。

objectName

オブジェクトレベルのサブスクリプションを表す場合はオブジェクトの名前、それ以外の場合はnull。

objectType

このサブスクリプションがオブジェクトレベルのサブスクリプションを表す場合はオブジェクト・タイプ(対応するサービスで定義される)、それ以外の場合はnull。

scopeGuid

スコープまたはスペースのGUID。

scopeName

スコープまたはスペースの表示名。

serviceId

このサブスクリプション・オブジェクトに対応するサービスのID。

serviceName

サービスの名前。

userId

このサブスクリプションを作成したユーザーのID。

49 最近のアクティビティ・サービスの統合

この章では、WebCenter Portal: Frameworkアプリケーションに最近のアクティビティ・サービスを統合する方法について説明します。このサービスを使用すると、サービスの最新の変更をアプリケーションで表示できます。

この章には次の項が含まれます:

- 第49.1項「最近のアクティビティ・サービスの概要」

- 第49.2項「最近のアクティビティ・サービスの基本構成」

- 第49.3項「最近のアクティビティ・サービスの詳細情報」

最近のアクティビティ・サービスの使用の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の最近のアクティビティ・サービスの使用に関する項を参照してください。

49.1 最近のアクティビティ・サービスの概要

Oracle WebCenter Servicesは、最近のアクティビティ・サービスと組み合せて動くよう事前に構成されています。最近のアクティビティを使用すると、ユーザーは、サービスへの最新の変更をアプリケーションで表示できます。たとえば、ドキュメント・サービスを追加すると、最近のアクティビティ・サービスでドキュメント・ライブラリへの最新の変更の表示に使用される情報が自動的に生成されます。このサービスは、アプリケーションの特定の箇所に行われた追加または変更を素早く、簡単に表示する方法が必要なユーザーにとって有用です。

最近のアクティビティ・サービスでは、次のWebCenter Servicesからの情報が追跡されます。

- ドキュメント・サービスで追加されたドキュメント

- お知らせサービスで作成されたお知らせ

- ディスカッション・サービスで作成されたディスカッション・フォーラム

- ページ・サービスで作成または変更されたページ

- リスト・サービスで作成または変更されたリスト定義

これらのサービスの詳細は、第32章「お知らせサービスの統合」、第33章「ディスカッション・サービスの統合」、第29章「ドキュメント・サービスの統合」および第18章「ページの実行時作成および管理の有効化」を参照してください。

この項には次のサブセクションが含まれます:

- 第49.1.1項「最近のアクティビティ・サービスの理解」

- 第49.1.2項「実行時の処理」

49.1.1 最近のアクティビティ・サービスの理解

最近のアクティビティ・サービスは、様々なサービスに対する最近の変更のサマリー情報を提供するものです。タスク・フローの上部にあるリストから時間の範囲を選択することによって、最近と見なされる時間の範囲を指定できます。記録されるアクティビティには、ページ、ドキュメント、ディスカッション・フォーラムなどの追加や変更が含まれます。

デフォルトでは、最近のアクティビティ・サービスは、ドキュメント、お知らせ、ディスカッション、およびページ・サービスと連携して機能します。最近のアクティビティ・サービスが追跡するサービスを絞り込むことができます。この設定の詳細は、次の項の第49.3項「最近のアクティビティ・サービスの詳細情報」を参照してください。また、第2.4項「Oracle WebCenter Portal: Servicesの概要」では、Oracle WebCenter Portal: Servicesの使用方法を学習できます。

最近のアクティビティ・サービスとアクティビティ・ストリーム(詳細は、第37.1.1.1項「アクティビティ・ストリーム」を参照)は多少似ています。両方により統合サービスのアプリケーション・アクティビティを追跡しますが、アクティビティ・ストリームにより幅の広いサービスが追跡されます。たとえば、最近のアクティビティは、ドキュメント、お知らせ、ディスカッションおよびページ・サービスを追跡します。アクティビティ・ストリームは、これらのサービスに加えて、ピープル・コネクション、Wikiおよびブログも追跡します。アクションを実行した人に関係なく、最近のアクティビティによりアクティビティが追跡されます。ユーザーの接続により実行されるアクティビティがアクティビティ・ストリームにより追跡され、アクティビティ実行者に関する情報が含まれます。最近のアクティビティには名前が含まれません。

これらの2つのサービスにおける基本的な相違点は、アプリケーションにおける処理内容の概要を最近のアクティビティにより提供することにまとめることができます。アクティビティ・ストリームにより、ユーザーの接続で実行した処理の概要を提供します。

49.1.2 実行時の処理

実行時に、最近のアクティビティ・タスク・フローは、アプリケーションで構成され実行されているサービスに関する最新情報をフェッチします。図49-1は、実行時の最近のアクティビティ・タスク・フローを示し、昨日からアプリケーションで発生した次のアクティビティが表示されています。

- ドキュメント・サービスを使用して1つのドキュメントがアップロードまたは追加されています

- ディスカッション・サービスを使用して5つのディスカッション・スレッドが変更または追加されています

- お知らせサービスを使用して1つのお知らせが変更または追加されています

時間範囲の選択肢(「過去30日間」、「今日」、「昨日から」など)は、設計時の最近のアクティビティの時間範囲パラメータ値のデフォルト値に基づいて表示されます(表49-1を参照)。

最近のアクティビティ・サービスは、WebCenterの検索機能を使用して、指定された期間のアクティビティを問い合せます。検索機能は、WebCenter Portalのドキュメント、お知らせ、ディスカッションおよびページの各サービスで実装されています。これらのサービスは、アプリケーションで構成されている場合、最近のアクティビティ・サービスの問合せに応答し、検索基準に関するアイテムを返します。問合せへのレスポンス(検索結果)は、検索条件のDCMI_MODIFIED > [start time]に常に基づきます。ここで、start timeは、設計時に「タスク・フロー・バインディングの編集」ダイアログで構成した期間の1つです。実行時には「表示」ドロップダウン・リストで期間を選択できます。

図49-1 実行時の最近のアクティビティ・サービス

「図49-1 実行時の最近のアクティビティ・サービス」の説明

49.2 最近のアクティビティ・サービスの基本構成

この項では、最近のアクティビティ・サービスをFrameworkアプリケーションに追加する方法について説明します。

この項には次のサブセクションが含まれます:

- 第49.2.1項「最近のアクティビティ・サービスの接続の設定」

- 第49.2.2項「最近のアクティビティ・サービスの設計時の追加」

- 第49.2.3項「最近のアクティビティ・サービス・タスク・フローのパラメータの変更」

- 第49.2.4項「最近のアクティビティ・サービスのセキュリティの設定」

49.2.1 最近のアクティビティ・サービスの接続の設定

最近のアクティビティ・サービス用に固有の接続を設定する必要はありません。最近のアクティビティ・サービスで追跡するサービスが構成されていることのみ確認する必要があります。他のサービスの接続を設定する方法の詳細は、このマニュアルで個々のサービスに関する章を参照してください。

49.2.2 最近のアクティビティ・サービスの設計時の追加

最近のアクティビティ・サービスを使用するには、そのタスク・フローをアプリケーションに追加する必要があります。追跡するサービスがアプリケーションに1つ以上あることを確認します。「WebCenter Portal - サービス・カタログ」には最近のアクティビティ・タスク・フローが1つあり、これをアプリケーションに追加することで、アプリケーション内のサービスに関する情報をユーザーに表示できます。

最近のアクティビティ・サービスでは、アプリケーション内の他のサービスを自動的に認識し、これらのサービス内での最近のアクティビティが検索されます。ただし、最近のアクティビティ・サービスが含まれるアプリケーションを実行する前に、監視するサービスがアプリケーションに1つ以上含まれていることを確認しておく必要があります。

最近のアクティビティ・タスク・フローをアプリケーションに追加するには:

1. 第7.2.1項「サービスを利用するようにアプリケーションを準備する方法」の手順に従い、セキュリティを実装しカスタマイズ可能ページをFrameworkアプリケーションで作成します。

2. カスタマイズ可能なページのソースを開きます。

3. 最近のアクティビティ・サービスが追跡するサービスが1つ以上アプリケーションに含まれていることを確認します。

注意:

これらのサービスを1つも含まないアプリケーションを実行すると、最近のアクティビティ・サービスから「警告: 最近のアクティビティ・データを取得できません。」というエラーが表示されます。

4. アプリケーションの「ViewController」プロジェクトを右クリックし、「新規」を選択して新しい外部アプリケーションを作成します。

5. 「新規ギャラリ」で、「一般」の下の「外部アプリケーション」を選択し、アイテム・リストから「外部アプリケーション」を選択します。

6. 「OK」をクリックします。

7. 「アプリケーション名」フィールドに、MyExternalApplicationなど、アプリケーションの名前を入力し、「次」をクリックします。

8. 「一般」ページの「ログインURL」フィールドは空のままにします。

9. 「ユーザー名/IDフィールド名」フィールドにユーザー名を入力します。ユーザー名は、追跡しているサーバーのログイン資格証明に一致している必要があります。たとえば、ドキュメント・サービスとOracle Content Serverを追跡している場合、ログイン資格証明は、Oracle Content Server上のユーザーに一致する必要があります。

10. 「パスワード・フィールド名」フィールドにパスワードを入力します。

11. 「認証の詳細」の下の「POST」を選択し、「次へ」をクリックします。

12. 「追加フィールド」ページで「フィールドの追加」ボタンをクリックします。

13. 「フィールド名」にAccountと入力します。

14. 「ユーザーに表示」チェック・ボックスを選択します。

図49-2 「追加フィールド」ページ

「図49-2 「追加フィールド」ページ」の説明

15. 「終了」をクリックします。

16. 「リソース・パレット」で「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」フォルダを開きます。

17. 「最近のアクティビティ」をクリックしてページの<af:form>タグの後にドラッグし、「リージョン」を選択します。

図49-3 「タスク・フロー・バインディングの編集」ダイアログ

「図49-3 「タスク・フロー・バインディングの編集」ダイアログ」の説明

図49-4の「タスク・フロー・バインディングの編集」ダイアログでは、実行時に表示する時間の範囲の値を設定できます。この時間の範囲によって、次の項で示すように、表示するアクティビティが制御されます。このパラメータを空のままにすると、最近のアクティビティ・サービスでは、サービスのデフォルト値が使用されます。

表49-1は、これらのパラメータで使用可能な値について説明しています。第49.3.1項「最近のアクティビティ・サービスの動作の調整」に記載されているように、この表に示されているデフォルト値はadf-config.xmlファイルに基づきます。

表49-1 最近のアクティビティの時間範囲パラメータ値

パラメータ

値

groupSpace

このパラメータはnullのままにします。

注意: このパラメータはSpacesアプリケーションでのみ使用され、スコープが設定されていないアプリケーションには関係しません。

timePeriodShort

デフォルト値: Today

指定できる値: Today、YesterdayまたはTime in Minutes

timePeriodMedium

デフォルト値: Since Yesterday

指定できる値: Today、YesterdayまたはTime in Minutes

timePeriodLong

デフォルト値: 10080

(10080分は7日に等しいです。)

指定できる値: Today、YesterdayまたはTime in Minutes

timePeriodLongest

デフォルト値: 43200

(43200分は30日に等しいです。)

指定できる値: Today、YesterdayまたはTime in Minutes

図49-4 最近のアクティビティ・サービスの「タスク・フロー・バインディングの編集」ダイアログの例

「図49-4 最近のアクティビティ・サービスの「タスク・フロー・バインディングの編集」ダイアログの例」の説明

18. 「OK」をクリックします。図49-5に示されるとおり、バインディングはページ上に表示されます。

図49-5 「デザイン・ビュー」内のページ上の最近のアクティビティ・タスク・フロー

「図49-5「デザイン・ビュー」内のページ上の最近のアクティビティ・タスクフロー」の説明

19. プロジェクトを保存し、ページをブラウザで実行します。

注意:

最近のアクティビティ・タスク・フローをページに追加すると、groupSpaceというタスク・フロー・パラメータが表示されます。このパラメータのデフォルト値はnullで、アプリケーション全体で最近のアクティビティを検索するようタスク・フローに指示します。

49.2.3 最近のアクティビティ・サービス・タスク・フローのパラメータの変更

最近のアクティビティ・サービス・タスク・フローには、必須のタスク・フロー・バインディング・パラメータとオプションのタスク・フロー・バインディング・パラメータがあります。タスク・フローをページ上にドロップした時点またはページ上にタスク・フローを配置した後にパラメータを調整できます。パラメータの変更の詳細は、第32.2.2.3項「お知らせサービス・タスク・フローのパラメータを変更する方法」を参照してください。パラメータの変更手順は、すべてのタスク・フローで同一です。

49.2.4 最近のアクティビティ・サービスのセキュリティの設定

最近のアクティビティ・サービスでは、分析の対象となる基礎のサービスに適用されるセキュリティを使用します。そのため、サービスから返される情報には、現在のユーザーが少なくとも表示権限を持つコンテンツのみが含まれます。たとえば、ドキュメント・ライブラリ内のコンテンツを表示できる権限を持たないユーザーの場合、最近のアクティビティ・ビューに、最近追加されたドキュメントは表示されません。同様に、パブリック・ユーザーには、パブリックに公開されているサービスについて返されるアクティビティのみが表示され、表示に認証を必要としません。

49.3 最近のアクティビティ・サービスの詳細情報

この項では、タスク・フロー・パラメータに加えて、最近のアクティビティ・サービスの動作も調整できることについて説明します。また、最近のアクティビティ・サービスのRSSニュース・フィードを取得する方法についても説明します。

この項には次のサブセクションが含まれます:

- 第49.3.1項「最近のアクティビティ・サービスの動作の調整」

- 第49.3.2項「最近のアクティビティ・サービスのRSSニュース・フィードURLの取得」

49.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>

このエントリ内で、表49-2に示されている設定を変更できます。

表49-2 adf-config.xmlファイル内の最近のアクティビティ設定

設定

説明

numServiceRows

デフォルト値: 25

1つのサービスに対して表示される最大行数。

最近のアクティビティの結果がこの値を超える場合は、この値を上限として、最新の結果が返されます。たとえば、最近変更されたドキュメントの数が32で、この設定が25の場合、最新の25個のみが結果に表示されます。

shortPeriod

デフォルト値: Today

表49-1を参照してください。この設定はtimePeriodShortタスク・フロー・パラメータと同じであり、タスク・フロー・パラメータが指定されない場合に使用されます。

mediumPeriod

デフォルト値: Yesterday

表49-1を参照してください。この設定はtimePeriodMediumタスク・フロー・パラメータと同じであり、タスク・フロー・パラメータが指定されない場合に使用されます。

longPeriod

デフォルト値: 10080(過去7日間)

表49-1を参照してください。この設定はtimePeriodLongタスク・フロー・パラメータと同じであり、タスク・フロー・パラメータが指定されない場合に使用されます。

longestPeriod

デフォルト値: 43200(過去30日間)

表49-1を参照してください。この設定はtimePeriodLongestタスク・フロー・パラメータと同じであり、タスク・フロー・パラメータが指定されない場合に使用されます。

services-filter

デフォルト値: null

このサービスで追跡しないサービスをフィルタ処理で除外するには、このタグを使用します。次の例では、ページ・サービスへの変更を、最近のアクティビティ・サービスでの表示から除外します。

<services-filter>
<exclude>oracle.webcenter.page</exclude>
</services-filter>

デフォルトでは、除外されるサービスはありません。

49.3.2 最近のアクティビティ・サービスのRSSニュース・フィードURLの取得

WebCenter Portal: Spaces機能をFrameworkアプリケーションで公開できます。Frameworkアプリケーション・ユーザーは、RSSニュース・フィードを通じて、特定のグループ・スペースで行われていることを知ることができます。

ユーザーがポータル内からグループ・スペースの最近のアクティビティを表示できるようにするには、最近のアクティビティ・サービスのRSSニュース・フィードを構成します。最近のアクティビティ・サービスのRSSニュース・フィードURLを取得するには、次のいずれかのWebCenter Portal: Spaces APIを使用します。

- getServiceRssFeedURL

- GetServiceRssFeedURLbyGUID

RSSフィードのURLを取得するには、グループ・スペースを(名前またはGUIDで)特定し、必要なサービスを(サービスIDで)指定する必要があります。最近のアクティビティ・サービスのサービスIDは、GroupSpaceWSClient.RECENT_ACTIVITY_SERVICE_IDです。これらのAPIを使用する方法の詳細は、第56.2.5.3.9項「スペース・サービスのためのRSSフィードURLの取得」を参照してください。

50 ワークリスト・サービスの統合

この章では、アプリケーションにワークリスト・サービスを統合する方法について説明します。ワークリストを使用すると、ユーザーはすべてのタスクと通知の表示およびこれに対する処理をBusiness Process Execution Language (BPEL)サーバーから1箇所で行えます。

この章には次の項が含まれます:

- 第50.1項「ワークリスト・サービスの概要」

- 第50.2項「ロードマップ - WebCenter Portal: Frameworkアプリケーションに対するワークリスト・サービスの構成」

- 第50.3項「ワークリスト・サービスの基本構成」

- 第50.4項「ワークリスト・サービスの詳細情報」

ワークリスト・サービスの管理および使用の詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のワークリスト・サービスの管理に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のワークリスト・サービスの使用に関する項

50.1 ワークリスト・サービスの概要

ワークリスト・サービスでは、現在の認証ユーザーに割り当てられているBusiness Process Execution Language (BPEL)ワークリスト項目を表示できます。BPELワークリスト項目は、アプリケーションが接続されている1つ以上のBPELワークリスト・リポジトリから開かれているBPELタスクです。ワークリストには、BPELワークフロー・プロセスの一部として起動されたタスクの結果、またはOracle User Messaging Serviceでワークリスト・チャネルへ送信されたメッセージの結果であるBPELワークリスト項目が表示されます。

この項には次のサブセクションが含まれます:

- 第50.1.1項「ワークリストの理解」

- 第50.1.2項「ワークリスト・サービスの要件」

- 第50.1.3項「実行時の処理」

50.1.1 ワークリストの理解

ワークリスト・サービスは、ユーザーが注目する必要があるビジネス・プロセスを、個人用のビューにまとめて表示します。これには、ドキュメント・レビューのリクエストや、エンタープライズ・アプリケーションから直接発生するその他の種類のビジネス・プロセスが含まれます。

ワークリスト項目は、様々なソースに基づきます。外部で定義されたワークフローに関連付けられたイベントによって発生するワークリスト項目もあります。ワークフローでは、イベントが発生したときに項目が従うルートをマップしています。この種類のワークフローは、Oracle BPMワークリストなど、ワークリストBPELサーバーで定義されます。

メッセージ、アラートおよび通知も、User Messaging Service (UMS)に基づく場合があります。ワークリスト・タスク・フローには、このサーバー上のメッセージング・プリファレンスにアクセスするためのコントロールが含まれます。Oracle User Messaging Serviceメッセージを受信するチャネルの指定およびメッセージ・フィルタの定義では、これらのコントロールを使用します。

関連項目:

実行時のサービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

50.1.2 ワークリスト・サービスの要件

ワークリスト・サービスを使用するには、BPELサーバーがインストールされている必要があります。ワークリスト・サービス用のBPELのインストールの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalインストールガイドのワークリスト・サービスのバックエンド要件に関する項を参照してください。

サービスで現在の認証ユーザーを使用してBPELサーバーにアクセスするため、ワークリストが正しく動作するためには、保護されたページにあることが必要です。ワークリスト・サービスが含まれるページまたはアプリケーションが保護されていない場合、例外エラーが発生します。

50.1.3 実行時の処理

実行時に、ワークリスト・タスク・フローは、BPELサーバーで構成されているBPELワークフローから、最新のワークリスト・ワークフロー項目をフェッチします。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のワークリスト・サービスの使用に関する項を参照してください。

ユーザーに割り当てられている項目のリストを取得するために、ワークリスト・サービスでは、パブリックBPMクライアントAPIのWebServiceアクセス関数を使用します。ワークリスト・サービスは、SAML認証を使用してログイン・ユーザーを認可し、BPELリポジトリから最新の項目のリストをフェッチします。ワークリスト・サービスはワークリスト接続ごとに最新の25項目をフェッチし、TaskQueryService APIの述部を使用して、これらの項目の順序を決定します。詳細は、Oracle Fusion Middleware Oracle SOA Suite開発者ガイドのカスタム・ワークリスト・クライアントの作成に関する項を参照してください。

図50-1は、実行時のワークリスト・サービスを示しています。

図50-1 実行時のワークリスト・サービス

「図50-1 実行時のワークリスト・サービス」の説明

50.2 ロードマップ - WebCenter Portal: Frameworkアプリケーションに対するワークリスト・サービスの構成

この項の図50-2および表50-1は、Frameworkアプリケーションでワークリスト・サービスを動作させるための前提条件と必要なタスクの概要を示しています。

図50-2 WebCenter Portal: Frameworkアプリケーションに対するワークリスト・サービスの構成

「図50-2 WebCenter Portal: Frameworkアプリケーションに対するワークリスト・サービスの構成」の説明

図50-1 WebCenter Portal: Frameworkアプリケーションに対するワークリスト・サービスの構成

アクター

タスク

サブタスク

管理者

1.Oracle WebCenter PortalおよびOracle SOA Suiteをインストールします

開発者

2.Frameworkアプリケーションにワークリスト・サービスを統合します

2.a ワークリスト接続を作成します

2.b JDeveloperでページにワークリスト・タスク・フローを追加します

開発者/管理者

3.次のいずれかのツールを使用してFrameworkアプリケーションをデプロイします

- JDeveloper (開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

- WLS管理コンソール(管理者)

管理者

4.Oracle BPMワークリスト・アプリケーションを使用して追加のBPELワークフローをデプロイします

管理者

5.(オプション): アプリケーションと同じアイデンティティ・ストアを使用するようにBPELサーバーを構成します

管理者

6.(オプション): BPELサーバーへの接続を保護します

6.a シングル・サインオンを構成します

6.b WS-Securityを構成します

6.c SSLを構成します

開発者/管理者

7.(オプション): 次のいずれかのツールを使用して接続パラメータを追加/変更します

- JDeveloper、アプリケーションの再デプロイ(開発者)

- Fusion Middleware Control (管理者)

- WLST (管理者)

エンド・ユーザー

8.ワークリスト・サービスの動作をテストします

8.a Frameworkアプリケーションにログインします

8.b ワークリスト・イベントを生成します

8.c タスク・フローにイベント情報が表示されることを確認します

50.3 ワークリスト・サービスの基本構成

この項では、ワークリスト・サービスの接続を設定する方法と、Frameworkアプリケーションにタスク・フローを追加する方法について説明します。

この項には次のサブセクションが含まれます:

- 第50.3.1項「ワークリスト・サービスの接続の設定」

- 第50.3.2項「ワークリスト・サービスの設計時の追加」

- 第50.3.3項「ワークリスト・サービスのセキュリティの設定」

50.3.1 ワークリスト・サービスの接続の設定

ワークリスト・サービスを使用するには、1つ以上のBPELサーバーへの接続を確立する必要があります。この項では、これらの接続について説明し、Frameworkアプリケーションでこれらを作成する方法について説明します。

50.3.1.1 ワークリスト・サービスの接続

ワークリスト・サービスではBPELサーバーを利用します。「ワークリスト接続の作成」ダイアログを使用して接続を作成すると、その接続はアプリケーションのconnections.xmlに登録され、アプリケーションのadf-config.xmlで参照されます。BPELワークリスト・リポジトリへの接続は、「アプリケーション・リソース」ペインに表示されます。

注意:

Oracle JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でEnterprise Manager Fusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』を参照してください。

50.3.1.2 ワークリスト・サービスの接続を設定する方法

ワークリスト・サービスには、設計時または実行時にアプリケーションに追加できるタスク・フローが用意されています。タスク・フローを実行する前に、アプリケーションからBPELサーバーへの接続を作成します。

注意:

使用するアプリケーションで、サービスを利用する準備が整っている必要があります。詳細は、第7章「WebCenter Portal Services用アプリケーションの準備」を参照してください。

ワークリスト・サービス用の接続を設定するには:

1. アプリケーションの「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「ワークリスト」を選択します。

2. 「ワークリスト接続の作成」ダイアログで、接続の作成をアプリケーション・リソースで行うのか(現在のアプリケーションのみがこの接続を使用できます)、IDE接続で行うのか(作成する他のアプリケーションが同じ接続を使用できます)を選択します。

3. 「接続名」フィールドに、接続の名前を入力します。この名前は、ワークリスト・サーバーの表示名として使用されます。

注意:

実行時にユーザーがワークリスト項目を表示する場合、項目をワークリスト・サーバーでグループ化できます。使用されるワークリスト・サーバーは、「接続名」フィールドに入力する名前です。

4. 「URL」フィールドに、http://bpel.example.comなど、BPEL/SOAサーバーの場所を入力します。これは、SOAプロセスが実行されている管理対象サーバーのURLです。

5. このサーバーで使用する「SAMLトークン・ポリシーURI」を選択します(図50-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サービスを使用してセキュリティを向上するには、これを選択します。選択した場合は、FrameworkアプリケーションとBPELアプリケーションの両方でキー・ストアを構成する必要があります。この構成の詳細は、Oracle Application Server Webサービス・セキュリティ・ガイドのポリシーの構成に関する項を参照してください。

図50-3 「ワークリスト接続の作成」ダイアログ

「図50-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セキュリティの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWSセキュリティの構成に関する項を参照してください。

7. 「接続のテスト」をクリックして、URLを検証します。

8. 「OK」をクリックします。
「アプリケーション・リソース」パネルの「接続」に、新しい接続が表示されます。

50.3.2 ワークリスト・サービスの設計時の追加

この項では、ワークリスト・タスク・フローについて説明し、これをアプリケーションに追加する方法について説明します。

50.3.2.1 ワークリスト・サービス・タスク・フロー

ワークリスト・サービスには、ワークリストという1つのタスク・フローが関連付けられています。このタスク・フローは、「リソース・パレット」の「WebCenter Portal - サービス・カタログ」にあります。

50.3.2.2 ワークリスト・サービスをアプリケーションに追加する方法

ワークリスト・サービスのアプリケーションへの追加は、接続を作成する前または接続を作成した後のどちらでも行えます。ただし、サービスを実行する前に接続を設定する必要があります。

ワークリスト・タスク・フローをアプリケーションに追加するには:

1. 第7.2.1項「サービスを利用するようにアプリケーションを準備する方法」の手順に従い、セキュリティを実装しカスタマイズ可能ページをアプリケーションで作成します。

2. ワークリスト・タスク・フローを追加するページを開きます。

3. リソース・パレットの「カタログ」ペインで、「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」フォルダを開きます。

4. ページ上の目的のリージョンにワークリスト・タスク・フローをドラッグし、ポップアップ・リストから「リージョン」を選択します。タスク・フローがページで表示されます。たとえば、「ソース」ビューに、図50-4が表示されます。

図50-4 ページ・ソースでのワークリスト・タスク・フロー

「図50-4 ページ・ソースでのワークリスト・タスク・フロー」の説明

5. プロジェクトを保存し、ページをブラウザで実行します。ブラウザにワークリスト・サービスが表示されます。

50.3.3 ワークリスト・サービスのセキュリティの設定

ワークリスト・サービスは、現在の認証ユーザーのタスクを表示します。そのため、アプリケーションからワークリスト・タスクをBPELサーバーに保存および取得するユーザーに対して、アプリケーションでセキュリティを設定する必要があります(第7.2.1.1項「サービスのセキュリティの実装」を参照)。ユーザー名は、共有ユーザー・ディレクトリ(LDAP)に存在するか、FrameworkアプリケーションとBPELサーバーの両方で同様(同じユーザー名)に設定する必要があります。たとえば、ユーザーrsmithが、Frameworkアプリケーション内のワークリスト・サービスを使用して、タスクをBPELサーバーに格納および取得する必要がある場合は、ユーザーrsmithがBPELサーバーとアプリケーションの両方に存在する必要があります。

割り当てられているワークリスト・タスクでユーザーがアクションを実行できるためには、SSOを構成できます。SSOを構成しないと、ユーザーはBPELサーバー上で「ワークリスト・タスクの詳細」ページへのログインを要求されます。詳細は、『Oracle Containers for J2EEセキュリティ・ガイド』を参照してください。

認証ユーザーにのみ、表示権限が与えられているBPELサーバー上のワークリスト・タスクが表示されます。アプリケーション・エンド・ユーザーが適切な資格証明を指定しない場合、またはワークリスト・サービスが含まれるページが保護されていない場合、BPELサーバーに格納されているワークリスト項目は表示されず、例外エラーが発生する可能性があります。

50.4 ワークリスト・サービスの詳細情報

ワークリスト・サービスでは、ワークリスト・サービスで定義されているアプリケーション内のすべての接続から、認証ユーザーのすべてのワークリスト項目を照合します。第50.3.1.2項「ワークリスト・サービスの接続を設定する方法」に記載されている接続作成方法を使用して追加の接続を作成したり、「アプリケーション・リソース」リスト内の接続名を右クリックし、「削除」を選択して接続を削除したりできます。

51 イベント・サービスの統合

この章では、設計時にWebCenter Portal: Frameworkアプリケーションにイベント・サービスを統合する方法について説明します。

この章には次の項が含まれます

- 第51.1項「イベント・サービスの概要」

- 第51.2項「イベント・サービスの基本構成」

- 第51.3項「イベント・サービスREST APIの使用」

- 第51.4項「イベント・サービスのトラブルシューティング」

イベントの管理および使用の詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のイベント・サービスの管理に関する項

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のイベント・サービスの使用に関する項

51.1 イベント・サービスの概要

Frameworkアプリケーション内で、イベント・サービスは個人用のMicrosoft Exchangeカレンダへのアクセスを提供します。

この項の内容は、次のとおりです。

- 第51.1.1項「イベント・サービスの理解」

- 第51.1.2項「イベント・サービスの要件」

- 第51.1.3項「実行時の処理」

51.1.1 イベント・サービスの理解

イベント・サービスを使用して、ユーザーは次の操作を行えます。

- Frameworkアプリケーションで各自のMicrosoft Exchangeカレンダを表示できます。

- Exchangeカレンダのイベントを作成、編集および削除できます。

- イベント・タスク・フローのビューを変更して、カレンダ・イベントを月/週/日単位またはリストで表示できます。

- イベント・タスク・フローをパーソナライズして、イベントを開始時間、第2タイムゾーン、リスト・タイプおよびリスト数に基づいて表示できます

イベント・サービスは、リンク、メール、検索など、多くのWebCenter Portalサービスと統合されます。

図51-1はFrameworkアプリケーション内の個人カレンダの例を示しています。

図51-1 個人カレンダ

51.1.2 イベント・サービスの要件

イベント・サービスはMicrosoft Exchange Serverと統合して、個人カレンダへのアクセスを提供します。適切なサーバーをインストールし、構成する必要があります。

Exchange Serverのインストールおよび構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のイベント・サービスの前提条件に関する項を参照してください。

51.1.3 実行時の処理

実行時に、ユーザーはMicrosoft Exchangeカレンダのイベントを表示できます。

実行時のサービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のイベント・サービスの使用に関する項を参照してください。

注意:

『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』には、個人イベントとスペース・イベントの両方が記載されています。Frameworkアプリケーションに適用されるのは、個人イベントに関する情報のみです。

51.2 イベント・サービスの基本構成

この項には次のサブセクションが含まれます:

- 第51.2.1項「イベント・サービスの構成ロードマップ」

- 第51.2.2項「イベント・サービスの接続の設定」

- 第51.2.3項「イベント・サービスの設計時の追加」

- 第51.2.4項「イベント・サービスのセキュリティの設定」

51.2.1 イベント・サービスの構成ロードマップ

この項のフローチャート(図51-2)と表(表51-1)は、Frameworkアプリケーション内でイベント・サービスを動作させるために必要な前提条件とタスクの概要を示しています。

図51-2 WebCenter Portal: Frameworkアプリケーションに対するイベント・サービスの構成

「図51-2 WebCenter Portal: Frameworkアプリケーションに対するイベント・サービスの構成」の説明

表51-1 WebCenter 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ログイン資格証明を入力します

51.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のように意味のある名前を入力します(図51-3)。

図51-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接続」の下にある接続を右クリックし、「アプリケーションに追加」を選択します。

接続は、アプリケーション・ナビゲータの「アプリケーション・リソース」パネルにリストされます(図51-4)。Exchange Serverに接続するユーザーのユーザー名およびパスワードを格納するために、外部アプリケーション接続も作成されます。

図51-4 アプリケーション・リソース - 個人イベント接続

「図51-4 アプリケーション・リソース - 個人イベント接続」の説明

51.2.3 イベント・サービスの設計時の追加

この項には次のサブセクションが含まれます:

- 第51.2.3.1項「イベント・タスク・フロー」

- 第51.2.3.2項「イベント・サービスをアプリケーションに追加する方法」

51.2.3.1 イベント・タスク・フロー

イベント・サービス・タスク・フローでは、イベントのメイン・ビューまたはクイック・ビューをページに追加できます。

表51-2 イベント・サービス・タスク・フロー

タスク・フロー

説明

カレンダ・メイン・ビュー

このタスク・フローでは、イベントのカレンダを表示し、イベントを日/週/月単位またはリストで表示するオプションをユーザーに提供します。

カレンダ・ミニ・ビュー

このタスク・フローもカレンダ・メイン・ビューと同様にカレンダを表示しますが、必要なスペースが少なくて済みます。ページとタスク・フローの編集権限を持つユーザーのみが、イベント・ビューを構成できます(日単位またはリスト・ビューで使用可能)。

51.2.3.2 イベント・サービスのアプリケーションへの追加方法

イベント・タスク・フローをアプリケーションに追加するには:

1. 第7.2項「サービスを利用するためのFrameworkアプリケーションの準備」の手順に従い、セキュリティを実装し、カスタマイズ可能なページをアプリケーションで作成します。

2. タスク・フローを追加するページを開きます。

3. リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。

4. 「カレンダ・メイン・ビュー」または「カレンダ・ミニ・ビュー」をページにドラッグして、af:formタグ内にドロップします。

5. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

6. イベント・タスク・フローはevent-view.jarライブラリに含まれるため、「ライブラリの追加」をクリックして、ライブラリをプロジェクトに追加します。この操作の完了には時間がかかる場合があります。

7. 「OK」をクリックします。

8. ページを保存し、実行します。
図51-5は実行時のカレンダ・メイン・ビュー・タスク・フローを示しています。

図51-5 カレンダ・メイン・ビュー・タスク・フロー

図51-6は、実行時のカレンダ・ミニ・ビュー・タスク・フローを示しています。

図51-6 カレンダ・ミニ・ビュー・タスク・フロー

51.2.4 イベント・サービスのセキュリティの設定

イベント・サービス用にMicrosoft Exchange Serverへの接続を作成すると、外部アプリケーション接続も作成されます。この外部アプリケーション接続は、Microsoft Exchange Serverのユーザーのユーザー名およびパスワードを格納するために作成されます。詳細は、第51.2.2項「イベント・サービスの接続の設定」を参照してください。

51.3 イベント・サービスREST APIの使用

WebCenter Portalには、イベント・サービスをサポートするREST APIがあります。イベント・サービスREST APIを使用して、スペース・イベントへのアクセスを提供する独自のインタフェースを作成します。

注意:

イベント・サービスREST APIは、スペース・イベントでのみ使用できます。REST APIを使用して個人イベントを操作できません。

この項では、イベント・サービスに関連するREST APIについて説明します。次のサブセクションが含まれます:

- 第51.3.1項「イベント・エントリ・ポイント」

- 第51.3.2項「イベント・リソース・タイプの分類」

- 第51.3.3項「セキュリティに関する考慮事項」

- 第51.3.4項「イベント・リソース・タイプ」

51.3.1 イベント・エントリ・ポイント

イベント・サービスのエントリ・ポイントには、スペースを介してのみアクセスできます。まず、適切なスペースに移動して、次のresourceTypeのリンク要素を見つける必要があります。

urn:oracle:webcenter:events:gsEvents

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、イベント・サービスを操作します。

リソース索引の詳細は、第53.5.1項「リソース索引」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

51.3.2 イベント・リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第51.3.4項「イベント・リソース・タイプ」の該当の項を参照してください。

イベント・サービスの分類は、次のとおりです。

urn:oracle:webcenter:events:gsEvents
urn:oracle:webcenter:events:gsEvent
urn:oracle:webcenter:events:gsCategories
urn:oracle:webcenter:events:gsCategory

51.3.3 セキュリティに関する考慮事項

このサービスでは、セキュリティに関する特定の考慮事項はありません。一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

51.3.4 イベント・リソース・タイプ

この項では、各リソース・タイプについて知っておく必要があるすべての情報を提供します。次のサブセクションが含まれます:

- 第51.3.4.1項「urn:oracle:webcenter:events:gsEvents」

- 第51.3.4.2項「urn:oracle:webcenter:events:gsEvent」

- 第51.3.4.3項「urn:oracle:webcenter:events:gsCategories」

- 第51.3.4.4項「urn:oracle:webcenter:events:gsCategory」

51.3.4.1 urn:oracle:webcenter:events:gsEvents

スペース・イベントの取得(GET)および作成(POST)で使用するURIを識別するには、このリソースを使用します。GET操作からのレスポンスには、このイベント・コレクション内の各スペース・イベントが含まれており、各イベントには、そのイベントの操作で使用するリンクが含まれています。POST操作からのレスポンスには、このイベント・コレクションに作成されたイベントと、そのイベントを操作するリンクが含まれています。

gsEventsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceIndex
spaces
gsEvents

gsEventsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし、パラメータ: 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からリンクされるリソース・タイプ

表51-3は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表51-3 gsEventsに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:events:gsEvents

51.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の書込み可能要素

表51-4は、このリソースの書込み可能要素を示しています。

表51-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の読取り専用要素

表51-5は、このリソースの読取り専用要素を示しています。

表51-5 gsEventの読取り専用要素

要素

タイプ

説明

author

personReference

イベントを作成したユーザー

created

日付

イベントが作成された日付

duration

String

イベントの長さ(分単位)

groupSpace

groupSpaceReference

イベントが属するスペース

id

String

イベントの一意のID

isAllDayEvent

Boolean

イベントが一日中行われるかどうか

modified

日付

イベントが最後に更新された日付

modifiedByUser

personReference

イベントを最後に更新したユーザー

gsEventからリンクされるリソース・タイプ

表51-6は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表51-6 gsEventに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:events:gsEvent

51.3.4.3 urn:oracle:webcenter:events:gsCategories

スペース・イベント・カテゴリの取得(GET)および作成(POST)で使用するURIを識別するには、このリソースを使用します。GET操作からのレスポンスには、このカテゴリ・コレクション内の各カテゴリが含まれており、各カテゴリには、そのカテゴリの操作で使用するリンクが含まれています。POST操作からのレスポンスには、このカテゴリ・コレクションに作成されたカテゴリと、そのカテゴリを操作するリンクが含まれています。

gsCategoriesへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceIndex
spaces
gsCategories

gsCategoriesでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- レスポンス - 本体: 0個以上のカテゴリ

- POST

- リクエスト - 本体: カテゴリ

- レスポンス - 本体: カテゴリ

gsCategoriesからリンクされるリソース・タイプ

表51-7は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表51-7 gsCategoriesに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:events:gsCategories

51.3.4.4 urn:oracle:webcenter:events:gsCategory

特定のスペース・イベント・カテゴリの読取り(GET)、更新(PUT)または削除(DELETE)で使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、URIで識別される特定のカテゴリが含まれています。PUT操作からのレスポンスには、URIで識別されるカテゴリの変更されたバージョンが含まれています。DELETE操作からのレスポンスは、204です。

gsCategoryへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してgsCategoryリソースにアクセスする方法を示します。

resourceIndex
spaces
gsCategories
gsCategory

gsCategoryでサポートされるメソッド

次のメソッドは、このリソース・タイプでサポートされています。

- GET

- リクエスト - 本体: なし

- レスポンス - 本体: カテゴリ

- PUT

- リクエスト - 本体: なし

- レスポンス - 本体: カテゴリ

- DELETE

- リクエスト - 本体: なし

- レスポンス - 本体: なし

gsCategoryの書込み可能要素

表51-8は、このリソースの書込み可能要素を示しています。

表51-8 gsCategoryの書込み可能要素

要素

タイプ

必須

制約

説明

name

String

はい

1文字以上の文字

カテゴリの名前

gsCategoryからリンクされるリソース・タイプ

表51-9は、クライアントがこのリソースからリンクできるリソース・タイプを示しています。

表51-9 gsCategoryに関連するリソース・タイプ

rel

リソース・タイプ

self

urn:oracle:webcenter:events:gsCategory

51.4 イベント・サービスのトラブルシューティング

この項では、イベント・サービスの使用中に発生する可能性がある問題のトラブルシューティングに役立つ情報を提供します。

問題

カレンダ・タスク・フローにエラー・メッセージが表示されます。

Personal Event Service is not configured properly. Rectify the service configuration and then click Try Again.

解決方法

個人イベント接続が作成されていることを確認します。詳細は、第51.2.2項「イベント・サービスの接続の設定」を参照してください。

問題

正しい資格証明でカレンダにログインした後も、イベントではなく、「個人カレンダにログイン」リンクが引き続き表示されます。

解決方法

カレンダ・タスク・フローが追加されているページが、保護されたページであることを確認します。匿名ユーザーは、個人イベント・カレンダ・サーバーにログインできません。

52 RSSサービスの統合

RSSサービスを使用すると、アプリケーション・ユーザーは、アプリケーション内でRSS 2.0形式のフィードを追加および表示できます。この章では、設計時にFrameworkアプリケーションにRSSビューアを統合する方法について説明します。

この章には次の項が含まれます:

- 第52.1項「RSSサービスの概要」

- 第52.2項「RSSサービスの基本構成」

RSSフィードの管理および使用の詳細は、次を参照してください。

- "『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のRSSサービスの管理に関する項

- "『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のRSSサービスの使用に関する項

52.1 RSSサービスの概要

Really Simple Syndication (RSS)は、1つの場所、つまりニュース・リーダーから、多くの異なるWebサイトのコンテンツにアクセスする手段を提供するものです。Oracle WebCenter Portalは、様々なWebCenter PortalサービスからのRSSフィードを表示するRSSビューアおよびサービスが含まれる、RSSサービスを備えています。RSSビューアを使用すると、Frameworkアプリケーション内で、異なるWebサイトからの外部ニュース・フィードを表示できます。

注意:

WebCenter Portal: Spacesでは、RSSはディスカッション・フォーラムでサポートされます。Portal Frameworkアプリケーションはディスカッション・フォーラム内でRSSをサポートしていません。

この項では、RSSサービスの機能と要件の概要を説明します。次のサブセクションが含まれます:

- 第52.1.1項「RSSサービスの理解」

- 第52.1.2項「RSSサービスの要件」

- 第52.1.3項「実行時の処理」

52.1.1 RSSサービスの理解

アプリケーション・ページで外部ソースからの新しいフィードを表示するには、図52-1に示すように、RSSビューア・タスク・フローを追加し、必要なRSSフィードのURLを指定します。アプリケーション・ユーザーは実行時にRSSフィードを表示できるようになります。

セキュアなアプリケーション・コンテンツへのアクセスを実現するために、RSSビューア・タスク・フローでは、外部アプリケーションとの統合をサポートして、リモート・フィードで認証する資格証明マッピング・サービスを提供します。外部アプリケーションの使用の詳細は、第68.13項「外部アプリケーションの使用」を参照してください。

図52-1 設計時に指定するRSSの詳細

「図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: Spacesユーザーズ・ガイド』のRSSサービスの使用に関する項を参照してください。

図52-2 実行時のRSSフィード

「図52-2 実行時のRSSフィード」の説明

52.2 RSSサービスの基本構成

この項では、RSSサービスのプロキシ・サーバーを設定する方法と、Frameworkアプリケーションに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-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ビューア・タスク・フローについて

RSSサービスにはRSSビューアというタスク・フローが1つあり、これをアプリケーションに追加すると、ユーザーはRSSフィードにアクセスできるようになります。複数のインスタンスのタスク・フローをアプリケーションに追加し、「タスク・フロー・バインディングの編集」ダイアログを使用して、複数のRSSフィード・ロケーションを指すことができます。

52.2.2.2 RSSビューア・タスク・フローをアプリケーションに追加する方法

RSSビューア・タスク・フローをアプリケーションに追加するには:

1. 第7.2.1項「サービスを利用するようにアプリケーションを準備する方法」の手順に従い、必要に応じてセキュリティを実装し、カスタマイズ可能なページをアプリケーションで作成します。

2. RSSビューア・タスク・フローを追加するカスタマイズ可能なページを開きます。

3. 使用するRSSフィードが認証を要求する場合は、外部アプリケーションを作成します。認証が要求されない場合は、手順4に進みます。

注意:

外部アプリケーションの詳細は、第68.13項「外部アプリケーションの使用」を参照してください。

4. 「リソース・パレット」で「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」フォルダを開きます。

5. 「RSSビューア」をクリックし、「デザイン・ビュー」内のページにこれをドラッグし、「リージョン」を選択します。

6. 「タスク・フロー・バインディングの編集」ダイアログで、RSSフィードのURLを指定します。RSSフィードの認証で外部アプリケーションを使用する場合は、図52-4に示すように、その名前(アプリケーション表示名ではなく、アプリケーション名)を指定します。

図52-4 RSSサービスの「タスク・フロー・バインディングの編集」ダイアログの例

「図52-4 RSSサービスの「タスク・フロー・バインディングの編集」ダイアログの例」の説明

表52-1では、RSSビューア・タスク・フロー・バインディング・パラメータの設定可能な値について説明しています。

表52-1 RSSビューア・タスク・フローのバインディング・パラメータ

パラメータ

値

rssFeedLocation

RSSフィードのロケーションを入力します。たとえば、Oracleプレス・リリースのRSSフィードを使用するには、次のように入力します。

${'http://www.oracle.com/rss/rss_ocom_pr.xml'}

extAppId

RSSフィードでFrameworkアプリケーションを認証する場合に使用する外部アプリケーションの名前を入力します。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 ページ・データ・バインディング定義

「図52-5 ページ・データ・バインディング定義」の説明

3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

4. 「タスク・フロー・バインディングの編集」ダイアログで、必要に応じてバインディング・パラメータ値を変更します。

5. 終了したら、「OK」をクリックします。

6. ページを保存して実行し、結果を表示します。

52.2.3 RSSビューア・サービスのセキュリティの設定

パブリックRSSフィードでRSSサービスを使用する場合、セキュリティを設定する必要はありません。認証を要求するRSSフィードでRSSサービスを使用する場合は、RSSフィードへのアクセス用のユーザー資格証明またはパブリック資格証明を設定するFrameworkアプリケーション用の外部アプリケーションを設定できます。

注意:

アプリケーション・コンテンツの保護のために、ニュース・リーダーはBasic認証をサポートする必要があります。

外部アプリケーションの使用の詳細は、第68.13項「外部アプリケーションの使用」を参照してください。

認証ユーザーにのみ、セキュアなRSSフィードが表示されます。ユーザーが認証されず、RSSフィードが保護されていない場合、外部アプリケーションでパブリック資格証明を指定しないかぎり、RSSビューアにコンテンツは表示されません。

注意:

RSSビューア・タスク・フローをFrameworkアプリケーションに追加すると、authenticated-roleに表示権限が自動的に追加されます。

第IX部

WebCenter Portalアプリケーションの拡張

第IX部の内容は次のとおりです。

- 第53章「Oracle WebCenter Portal REST APIの使用」

- 第54章「他のOracleアプリケーションの統合」

- 第55章「JDeveloperを使用したSpacesアプリケーションの拡張」

- 第56章「Oracle WebCenter Portal: Spacesの概要」

53 Oracle WebCenter Portal REST APIの使用

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/technology/products/webcenter/release11_demos.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: Spacesアプリケーションとやり取りします。ネイティブの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: Spacesのデータへアクセスし変更したりできます。一般に、WebCenter RESTコマンドは、SOAPスタイルWebサービス・アプローチのより自然で使いやすい代替を提供します。

表53-1では、WebCenter Portal: Services機能用に提供されているOracle WebCenter Portal REST APIについて説明しています。

表53-1 REST APIでサポートされるWebCenter Portal: Services機能の一覧

REST API

説明

章

ディスカッション

クライアントが、ディスカッション・フォーラム、トピックおよびメッセージを投稿、読取り、更新および削除できます。

第33.3.8項「ディスカッション・サービスREST APIの使用」

リスト

クライアントが、名前付きグループ・スペースに関連付けられたすべてのリストの参照、検索条件によるリスト列の検索、新規リストの作成、リスト行の追加、更新および削除、および同様のリスト関連タスクを実行できます

第47.4項「リスト・サービスREST APIの使用」

ピープル・コネクション

クライアントが、プロファイル・データの表示、コネクション・リスト、フィードバックおよびメッセージの管理、ユーザー、リストおよびグループ・スペースでの新規アクティビティの作成とアクティビティの表示を実行できます。

第41章「ピープル・コネクション・サービスREST API」

WebCenter Portal: Spaces

クライアントが、グループ・スペース・メタデータの取得、およびグループ・スペース・リストとリスト・アイテムの表示、作成、更新および削除を実行できます。開発者はグループ・スペースのメンバーシップ情報も取得できます。

第56.3項「WebCenter Portal: Spaces REST APIの使用方法」

コンテンツ管理

Content Management Interoperability Services (CMIS) RESTfulサーバー・バインディングを使用して、Content Management Virtual Content Repository (CM VCR)へのアクセスを提供します。

Oracle Fusion Middleware Content Management REST Service開発者ガイド

アクティビティ・グラフ

基になるアクティビティ・グラフ・エンジンを使用して、接続、グループ・スペースおよびアイテムに関する推奨事項を取得できます。

第45.3.2項「アクティビティ・グラフ・サービスREST APIの使用」

イベント

名前付きグループ・スペースに関連付けられたカレンダ・イベントにアクセスできます。

第51.3項「イベント・サービスREST APIの使用」

フィードバック

クライアントが、ソーシャル・ネットワーク・アプリケーションでフィードバックを作成、読取りおよび削除できます。

第41章「フィードバックREST API」

検索

検索を投稿、確認、更新および削除します。検索のキーワードと範囲を指定できます。たとえば、iPhoneではすべてのスペース、ドキュメントおよびWikiページ内の「smith」を検索できます。

第44.3.7項「検索サービスREST APIの使用」

タグ

クライアントが、タグおよびタグ付けしたアイテムをポスト、読取り、更新および削除できます。

第43.3.2項「タグ・サービスREST APIの使用」

ナビゲーション

ナビゲーションREST APIを使用して、ナビゲーションを表示する独自のインタフェースを作成します。

注意: ナビゲーションREST APIは、この章に記載されているリソース索引を共有しません。

第13.3.2項「ナビゲーションREST APIの使用」

パーソナライズ

パーソナライズ・コンダクタにアクセスできます。

第66.4項「パーソナライズの拡張」

ページレット

リモートWebサービスは、リソースとページレットに関する情報を取得できます。ページレットをプロキシ設定されていないページに注入して、「ページレット・プロデューサ」がOracle WebCenter Interaction、Oracle WebLogic Portal、またはその他のサードパーティ・ポータルのポートレット・プロバイダとして動作できるようにします。

第65.2.2.2項「RESTを使用したページレットへのアクセス」

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です。

WebCenterリソース索引URIは、次のとおりです。

http://host:port/rest/api/resourceIndex

注意:

リソース索引へのアクセスには、常に認証が必要です。ただし、次のURIを使用して、(必要に応じて)CMISリソース・エントリ・ポイントに匿名でアクセスできます。

http://host:port/rest/api/cmis/repository

第53.9項「CMIS 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 リンクの構造

例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...
]

ハイパーメディア・リンクのresourceType、relおよびcapabilities属性は、クライアントがURIを直接解析する必要なく、使用するURI(hrefまたはtemplate)を決定できるようにするメタデータを提供します。URIは不透明で、メタデータによって特定の環境でどのリンクが役立つかが決まります。

複合語のフィールド名、要素名および属性名は、サービス作成者の直接管理下にない仕様に準拠する場合を除いて、キャメル・ケースで書式設定されます。頭字語は、大文字と小文字が必要に応じて調整されて、通常の単語として扱われます(たとえば、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管理者ガイド』のFrameworkアプリケーションでのシングル・サインオンの構成に関する項を参照してください。

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仕様を参照してください。

53.12 プロキシ・サーバーの構成

プロキシ・サーバーは、通常、ブラウザ・クライアントからのXMLHttpRequest (XHR)コールに関連する、クロスドメイン・リクエストの問題を回避するために使用されます。これらのコールは、通常、多機能な対話型のクライアント側インタフェースを作成する、Ajax開発技術に関係します。REST APIは、通常、このようなクライアント側開発のシナリオで使用されます。

プロキシ・サーバーの設定の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のプロキシ・サーバーの構成に関する項を参照してください。

53.13 WebCenter PortalのREST APIの例

この項では、WebCenter Portal REST APIの使用方法のサンプルを示します。次のサブセクションが含まれます:

- 第53.13.1項「メッセージ・ボード・ハイパーメディアのナビゲーション」

- 第53.13.2項「アクティビティ・ストリーム・データの表示」

- 第53.13.3項「WebCenterピープル・コネクション・サービスREST APIとExtの使用」

- 第53.13.4項「ユーザー・ステータスの更新」

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.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.2 アクティビティ・ストリーム・データの表示

アクティビティ・ストリーム・データを正しく表示するには、次の操作を行う必要があります。

- アクティビティ・ストリームURIエントリ・ポイントの取得

- アクティビティ・ストリーム・データの取得

- アクティビティ・ストリーム・データを表示するための処理

このサンプルは、Oracle Technology Network (OTN)のOracle WebCenter Portalのデモとサンプルのページでご利用いただけます。

http://www.oracle.com/technology/products/webcenter/release11_demos.html

次に、例53-20について説明します。

- getResourceURLメソッドは、メイン・リソース索引(/rest/api/resourceIndex)のJSONデータを取得し、そのデータ内でアクティビティ・ストリーム・リソースのURIを見つけることによって、アクティビティ・ストリーム・サービスのURIエントリ・ポイントを取得する方法を示しています。

- formatMessageメソッドは、アクティビティ・ストリーム・データを処理して表示可能な形式にします。これには、個々のメッセージの検索と、メッセージ内のテンプレート・パラメータをそのパラメータに対応するオブジェクトまたはユーザーの名前に置換する処理が含まれます。パラメータには、オブジェクトまたはユーザーを表示するためのリンクも含まれます。そのオブジェクトまたはユーザー用のRESTサービスへのリンクがある場合は、それが含まれることもあります。

注意:

リソース索引およびアクティビティ・ストリームJSONデータを取得するには、Javascript(および場合によってはDojoなどのクライアント側スクリプト・ライブラリ)を使用してAjaxリクエストを作成し、結果のデータを適切なメソッドに渡します。

例53-20 アクティビティ・ストリーム・データの表示

/* 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 WebCenterピープル・コネクション・サービスREST APIとExtの使用

Extは、表とフォームを作成し、それらをREST Webサービスにリンクするための、一般的なJavaScriptライブラリです。次の例は、Ext JsonStoreおよびGridPanelを使用してピープル・コネクション・サービスのREST APIからコネクションのリストを表示する方法を示しています。

Extの詳細は、次を参照してください。

http://www.extjs.com/

注意:

ExtはWebサーバーで実行する必要があります。そのサーバーがWebCenterインスタンスでない場合は、クロスサイト・スクリプティングの問題が発生します。WebCenterサーバーでサンプルを実行できないがExtを使用する必要がある場合は、Apache、WebCenter Ensembleなどのプロキシを検討します。

このサンプルは、Oracle Technology Network (OTN)のOracle WebCenter Portalのデモとサンプルのページでご利用いただけます。

http://www.oracle.com/technology/products/webcenter/release11_demos.html

この項には次のサブセクションが含まれます:

- 第53.13.3.1項「HTMLページの作成」

- 第53.13.3.2項「JavaScriptファイルの作成」

- 第53.13.3.3項「結果」

53.13.3.1 HTMLページの作成

例53-21は、単純なHTMLページを示しています。HTMLページは、要求されるExtファイルおよびJavaScriptファイルconnections.jsを参照する必要があります。ページの本体には、宛先divが含まれています。このdiv内にGridPanelがレンダリングされます。

例53-21 HTMLページ

<head>
<link rel="stylesheet" type="text/css" href="../../extjs/resources/css/ext-all.css" />
<script type="text/javascript" src="../../extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../../extjs/ext-all.js"></script>
<script type="text/javascript" src="connections.js"></script>
</head>

<body>
<div id="connections"></div>
</body>

53.13.3.2 JavaScriptファイルの作成

JavaScriptファイルconnections.jsを使用すると、ページがロードされたときにリストを移入できます。例53-22は、すべてのJavaScriptがExt.onReady()へのパラメータであることを示しています。

例53-22 Ext.onReadyへのパラメータとしてのconnections.js

Ext.onReady(function() {
//our code goes here
});

JavaScriptは次の処理を行います。

1. 最初に、リソース索引を問合せます(例53-23)。
例では、JSON形式のレスポンスを要求しています。

例53-23 リソース索引の問合せ

//Connection Information
var resourceIndexURL = "http://webcenter_server/rest/api/resourceIndex";
var peopleServiceURN = "urn:oracle:webcenter:people";
var connectionsURN = "urn:oracle:webcenter:people:person:list";
var connectionsRel = "urn:oracle:webcenter:people:person:list:connections";

//create a request for the resourceIndex
Ext.Ajax.request({
url: resourceIndexURL,
method: 'GET',
success: function(response, opts) {
//locate the people connections entry point
var index = Ext.decode(response.responseText);
for (x in index.links) {
if (index.links[x].resourceType == peopleServiceURN)
getMe(index.links[x].href);
}
},
failure: function(response, opts) {
alert('Could not communicate with the REST server.');
},
headers: {
'Accept': 'application/json'
},
});

2. 次に、JavaScriptは認証されたリクエストをピープル・コネクション・エントリ・ポイントに送信し、レスポンスからコネクション・リストのURLを取得します(例53-24)。
デフォルトでは、REST APIはAPIを保護するためにBasic認証を使用します。この例では、コネクション・リストURLへ渡される資格証明はBase64エンコード方式です。Ext自体にはBase64ユーティリティ・オブジェクトはありませんが、次で開発されています:

http://extjs.com/forum/showthread.php?p=167166

例53-24 コネクション・リストURLの取得

function getMe(requestURL) {
//Encode a token to identify yourself with secure parts of the REST API.
var unencodedToken = "username" + ":" + "password";
var encodedToken = "Basic " + Ext.util.base64.encode(unencodedToken);

//call the connections entry point
Ext.Ajax.request({
url: requestURL,
method: 'GET',
success: function(response, opts) {
//locate the link for my connections
if (index.links[x].resourceType == connectionsURN) {
if (index.links[x].rel == connectionsRel)
getMyConnections(index.links[x].href, encodedToken);
}
},
failure: function(response, opts) {
alert('Could not communicate with the REST server.');
},
headers: {
'Accept': 'application/json',
'Authorization' : encodedToken
},
});
}

3. 次に、認証されたリクエストをコネクション・リストURLに送信します(例53-25)。

例53-25 コネクション・リストURLへの認証済リクエストの送信

function getMyConnections(requestURL, encodedToken) {
Ext.Ajax.request({
url: requestURL,
method: 'GET',
success: function(response, opts) {
displayData(response, opts);
},
failure: function(response, opts) {
alert('Could not communicate with the REST server.');
},
headers: {
'Accept': 'application/json',
'Authorization' : encodedToken
},
});
}

4. JavaScriptは、JsonStoreにレスポンスを追加します(例53-26)。
以前、この例では、コネクション・リストURLへのコールが正常なコールのためのハンドラとしてdisplayData()が指定されていました。現在では、関数を作成し、JsonStoreコードを追加します。JsonStoreでは、データのデータ・モデルが定義され、RESTコールで予期される結果にマップされます。

例53-26 JsonStoreへのレスポンスの追加

function displayData(response, opts) {
//create a datamodel to display the JSON
var store = new Ext.data.JsonStore({
// store configs
autoDestroy: true,
storeId: 'forumStore',
// reader configs
root: 'items',
idProperty: 'id',
fields: ['displayName', {name:'email', mapping:'emails.value'},
{name:'phone', mapping:'phoneNumbers[0].value'}]
});
}

5. JavaScriptは、例53-27のコードをdisplayData()に含めることによって、JsonStoreを表示するためのExt GridPanelを作成します。
グリッドは、列とタイトルを定義します。表のサイズなど、他の表示オプションも含まれます。

例53-27 JsonStoreを表示するためのGridPanelの作成

//create the Grid
var grid = new Ext.grid.GridPanel({
store: store,
columns: [
{id: 'conn', header: 'Connection', width: 80, sortable: true, dataIndex: 'displayName'},
{header: 'Email', width: 120, sortable: true, dataIndex: 'email'},
{id: 'phone', header: 'Phone', width: 120, sortable: true, dataIndex: 'phone'}
],
stripeRows: true,
autoExpandColumn: 'conn',
height: 200,
width: 400,
title: 'My Connections',
viewConfig: {scrollOffset: 2}
});

6. 最後に、コードは、例53-28の行をdisplayData()に含めることによって、GridPanelをレンダリングします。

例53-28 GridPanelのレンダリング

grid.render('connections');

53.13.3.3 結果

図53-1に、ピープル・コネクション・サービスREST APIのコネクションのリストを示します。

図53-1 コネクション・リスト

「図53-1 コネクション・リスト」の説明

53.13.4 ユーザー・ステータスの更新

次の例は、REST APIを使用してユーザーのWebCenterプロファイル・ステータスを更新する方法を示しています。

注意:

サンプルは、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/technology/products/webcenter/release11_demos.html

ユーザー・ステータスの更新では、ステータス・オブジェクトのURLを取得するための、一連の非同期AJAXコールが行われます。

urn:oracle:webcenter:resourceindex
urn:oracle:webcenter:people
urn:oracle:webcenter:people:person:status

ユーザー・ステータスを更新するHTMLページ(例53-29)には、ユーザーが新しいステータス・メッセージ(statusMessage)を入力できる入力フィールドがあります。「Update Status」ボタンをクリックすると(または[Enter]キーを押すと)updateStatusメソッドがコールされて、リソース索引への初期コールが行われます。

例53-29 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-2は、HTMLページを示しています。

図53-2 新しいステータス・メッセージのHTMLページ

例53-30のコードは、リソース索引(/rest/api/resourceIndexに設定されているresourceIndexURL変数)を取得します。リソース索引は、AJAXリクエスト・オブジェクト(resourceIndexRequest)として返されます。

例53-30 リソース索引の取得

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-31に示すgetResourceURLメソッドは、RESTコールによって返されるデータ内のリンクを調べて、要求されたリソース・タイプを識別する指定の文字列(URN)を見つけます。

例53-31 リンクのトラバース

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-32では、getResourceURLを使用してリソース索引を解析して、ユーザー・プロファイルURLを見つけます。データは、AJAXリクエスト・オブジェクト(profileRequest)として返されます。

例53-32 ユーザー・プロファイルの取得

function resourceIndexCallback(data) {
//get my user profile
profileRequest.get(
getResourceURL(data, 'urn:oracle:webcenter:people'),
profileCallback,
clearUIBusy);
}

例53-33は、HTMLページでユーザーが指定した新しいステータス・メッセージを受け取り(statusMessage)、request.putを使用して、(getResourceURLを再びコールして取得した)ステータス・オブジェクトを更新します。

例53-33 ステータス・オブジェクトの取得

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-34のrenderStatusPutResultsメソッドは、新しいステータス・オブジェクトをレンダリングします。

例53-34 新しいステータス・オブジェクトのレンダリング

function renderStatusPutResults(data) {
var name = profile.displayName;
// get the URL for my profile HTML page in WebCenter Portal: Spaces
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-35は、UIを無効化および再有効化するコードを示しています。

例53-35 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-36は、AJAXコールに役立つライブラリを示しています。その大部分はWebCenter固有のものではなく、JSONを返すサービスに対する任意のXHRリクエストで使用できます。

ライブラリには再利用可能なXHRオブジェクトが含まれています。このオブジェクトは、HTTP GET、POST、PUTおよびDELETEをサポートします。すべての関数は非同期であり、URLと2つのコールバック関数(成功した場合と失敗した場合)を使用します。成功コールは、戻りデータが含まれるJavaScriptオブジェクトを使用して行われます。失敗コールは、エラー文字列を使用して行われます。POSTおよびPUTも、JSON文字列のデータ引数を使用します。

例53-36 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アプリケーションの統合

この章では、お使いのWebCenter Portalアプリケーションに他の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の統合

「図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サービスをFrameworkアプリケーションに統合する方法を説明します。また、Siebel Webエンジン(SWE)を使用してSiebelオブジェクトを統合する方法も説明します。SiebelとWebCenter Portalは連係して、SiebelのCRM機能をポートレットとしてFrameworkアプリケーションに組み込むことができます。Siebelアプリケーションは、Webサービスとして統合することも、次の項で説明しているSiebel Webエンジン(SWE)を使用して統合することもできます。

- 第54.2.1項「WebサービスとしてのSiebelアプリケーションの統合」

- 第54.2.2項「Siebel Webエンジンを使用したSiebelアプリケーションの統合」

54.2.1 WebサービスとしてのSiebelアプリケーションの統合

この項では、SiebelアプリケーションをWebサービスとしてFrameworkアプリケーションに統合する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.2.1.1項「Siebelアプリケーションの準備」

- 第54.2.1.2項「Frameworkアプリケーション内での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サービスに操作を追加してから、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サービスの使用

この項では、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. お使いのFrameworkアプリケーションを開くか、新しい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がページに表示されます。

注意:

Oracle 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.2 Siebel Webエンジンを使用したSiebelアプリケーションの統合

Webサービスを使用してSiebelアプリケーションを統合できます。さらに、Siebel Webエンジン(SWE)を使用してSiebelアプリケーションをFrameworkアプリケーションに統合することもできます。

Siebel Webエンジン(SWE)は、Siebelユーザー・インタフェースをレンダリングする役割を果たします。Siebel Webテンプレートは、アプリケーションのリポジトリ定義内のSiebelオブジェクトをレンダリングする際に、このHTMLレイアウト情報(マークアップ情報)をSiebel Webエンジンに提供します。SWEから返されるマークアップは、XML対応アプリケーション内でレンダリングするためのXMLにすることも、ワイヤレス・デバイス上でレンダリングするためのWML (Wireless Markup Language)にすることもできます。これにより、SiebelビューをXMLとして返すようにSWEに要求して、データ要素を解析して、結果をFrameworkアプリケーション内に表示することが可能になります。

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項「FrameworkアプリケーションへのEBSアプリケーションの統合」

- 第54.3.3項「SpacesへのEBSアプリケーションの統合」

54.3.1 EBSアプリケーションの統合の概要

この項では、Oracle E-Business SuiteポートレットをWebCenter Portalアプリケーションに統合するにあたっての統合のポイントと要件を説明します。

この項には次のサブセクションが含まれます:

- 第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ポートレットをアプリケーション・ページに追加すれば、WebCenter Portal: FrameworkアプリケーションやWebCenter Portal: SpacesなどのWSRP準拠ポータル・サーバーからそれらのポートレットにアクセスできるようになります。これらのポートレットをFrameworkアプリケーション・ページに追加するには、第54.3.2.3項「リモート・プロデューサを使用するためのJSFページの作成」の手順に従い、Spacesページに追加するには、第54.3.3.3項「SpacesページへのEBSポートレットの追加」の手順に従ってください。

同様にFrameworkアプリケーションに追加可能なWSRPとJSR 168に準拠した新しいE-Business Suiteポートレットを作成することもできます。WebCenter PortalでのWSRPとJSR 168に準拠したポータルの作成と使用については、第54.3.2項「FrameworkアプリケーションへのEBSアプリケーションの統合」および第54.3.3項「SpacesへのEBSアプリケーションの統合」を参照してください。

54.3.1.2 EBSアプリケーションを統合するための要件

Oracle E-Business SuiteポータルをWebCenter Portalアプリケーションに統合するための要件は次のとおりです。

- ポートレットとして公開するリージョンは、Oracle E-Business Suite OA Framework リリース12を使用して作成する必要があります。これより前のバージョンは、WSRPとJSR 168に準拠していないからです。

- Oracle E-Business Suiteは、Oracle Internet Directory (OID)と次のいずれかのシングル・サインオン・ソリューションを使用するように構成される必要があります。

- 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と統合してください。

- WebCenter Portalアプリケーションに対してE-Business Suite Portlet Producerへのアクセス権を付与して、適切なユーザーを追加および構成しておく必要があります。

注意:

一部の手順の実行には、システム管理者の権限が必要になることがあります。

54.3.2 FrameworkアプリケーションへのEBSアプリケーションの統合

この項には次のサブセクションが含まれます:

- 第54.3.2.1項「EBSポートレットのリモート・アクセスの準備」

- 第54.3.2.2項「FrameworkアプリケーションへのEBS WSRPプロデューサの登録」

- 第54.3.2.3項「リモート・プロデューサを使用するためのJSFページの作成」

- 第54.3.2.4項「Frameworkアプリケーションのテスト」

54.3.2.1 EBSポートレットのリモート・アクセスの準備

Oracle E-Business Suite OA Frameworkにより、任意のスタンドアロン・リージョン(pageLayoutリージョンを除く)をポートレットとして公開できます。ポートレットは常にHTML表のセル内でレンダリングされ、ページ・レイアウトページ・リージョンには表のレンダリングできないHTML構成が含まれているため、ページ・レイアウト・リージョンはポートレットとして公開できません。

注意:

Oracle Application Frameworkプロバイダは、Javaポートレット仕様に従い、HTTP GETを使用してフォーム送信を処理しています。(PLT.16.3「The Include Method」 - 「Servlets and JSPs included from portlets must be handled as HTTP GET requests」を参照してください)。この制限のため、データ入力が必要なリージョン(検索基準リージョン、LOV、テキスト入力など)はポートレットとして公開できません。

ヒント:

また、ポートレット・ジェネレータというOracle E-Business Suiteツールを使用して、既存のスタンドアロンのOracle Application Frameworkリージョンをポートレットに変換することもできます。ポートレット・ジェネレータの詳細は、Oracle E-Business Suiteシステム管理者ガイド - 構成を参照してください。

リージョンをポートレットとして公開するには:

1. リージョンをポートレットとして登録するためのUI機能を作成します。UI機能の作成の詳細は、タブ/ナビゲーションに関する項を参照してください。

2. 新しいUI機能内で次のプロパティを設定します。

- 機能タイプ=Webプロバイダ・ポートレット(内部値はWEBPORTLET)。
WSRP/JSR168準拠のポートレットを定義するには、ポートレット関数定義にパラメータを追加する必要があります。パラメータ=OA_JSR168_PORTLET=Y

- HTMLコール=OA.jsp?region=<使用しているリージョンの参照>
例: OA.jsp?region=/oracle/apps/fnd/wf/worklist/webui/WorklistPrtletRG

ポートレットにドリルダウン・ページが含まれる場合は、ページの参照または関数名を使用してドリルダウンの対象を指定する前述のURIにパラメータを追加します。例:

1. &detailPage=<対象ページ>
例:

OA.jsp?region=/oracle/apps/fnd/wf/worklist/webui/WorklistPrtletRG
&detailPage=/oracle/apps/fnd/wf/worklist/webui/AdvancWorklistPG

2. &detailFunction=<フォーム関数名>
例:

OA.jsp?region=/oracle/apps/fnd/wf/worklist/webui/WorklistPrtletRG
&detailFunction=WF_WORKLIST_DRILL_FUNC

3. 必要に応じて、ポートレットのパーソナライズを無効にします。
デフォルトでは、OA Framework Webプロバイダを使用してレンダリングされたすべてのポートレットで、タイトル・バーに「カスタマイズ」リンクが含まれます。リンクをクリックすると、ポートレットのタイトルと責任を変更できるカスタマイズ・ページが表示されます。このページで、ポートレットのタイトルをカスタマイズし、それに責任を割り当てることができます。責任のカスタマイズは、ポートレットのコンテンツが責任のコンテキストに依存しており、複数の責任に関連付けられている場合に役立ちます。

ポートレットのカスタマイズを無効にするには、&dispRespCustPg=NをHTMLコールURIに追加します。

For example:OA.jsp?region=/oracle/apps/fnd/wf/worklist/webui/WorklistPrtletRG&dispRespCustPg=N

4. Oracleオンライン・ヘルプを使用して定義したヘルプ・テキストをポートレットに関連付けます。
ヘルプ・テキストをポートレットに関連付けると、OA Framework Webプロバイダがポートレット・タイトル・バー内のヘルプ・テキスト・アイコン(?)をレンダリングします。アイコンをクリックするとヘルプ・テキストが表示されます。ヘルプ・テキストをポートレットに関連付けるには、&oawpHelpTarget=<Oracleオンライン・ヘルプの参照>をHTMLコールURIに追加します。

For example:OA.jsp?region=/oracle/apps/fnd/wf/worklist/webui/WorklistPrtletRG&oawpHelpTarget=worklistHelp

ポートレットの作成後、メニューに新しいUI機能を追加し、そのメニューを役割に関連付けることによって、新しいUI機能へのアクセス権を付与します。ポートレットをWebCenter Portalに追加する前に、メニューと関数の定義がキャッシュされるため、必ずApacheリスナーをバウンスしてください。この操作を実行するには、システム管理者の権限が必要になります。

54.3.2.2 FrameworkアプリケーションへのEBS WSRPプロデューサの登録

次の手順に従って、新しいFrameworkアプリケーションを作成するか既存のFrameworkアプリケーションを開いて、EBS WSRPプロデューサを登録してください。

1. リモート(WSRP) EBSポートレットの使用場所として、新しいFrameworkアプリケーションを作成するか、既存の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.2.3項「リモート・プロデューサを使用するためのJSFページの作成」の説明に従って、WSRPプロデューサを使用するためのJSFページを作成します。

54.3.2.3 リモート・プロデューサを使用するためのJSFページの作成

次の手順に従って、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.2.4項「Frameworkアプリケーションのテスト」の説明に従って、該当ページを実行して、Frameworkアプリケーションで加えた変更内容がEBSアプリケーションで表示されることをテストします。

54.3.2.4 Frameworkアプリケーションのテスト

次の手順に従って、Frameworkアプリケーション内のJSFページのコンテンツを変更して、その変更内容がEBSアプリケーションで表示されることを確認することで、Frameworkアプリケーションをテストします。

1. 作成した.jspxページを実行します。

2. 実行中のページで、なんらかの情報を変更します。この情報は、その変更内容をEBSアプリケーションで確認できるものである必要があります。

3. 変更を保存し、変更内容がEBSアプリケーションでも表示されることを確認します。

54.3.3 SpacesへのEBSアプリケーションの統合

この項には次のサブセクションが含まれます:

- 第54.3.3.1項「EBSポートレットのリモート・アクセスの準備」

- 第54.3.3.2項「SpacesへのEBS WSRPプロデューサの登録」

- 第54.3.3.3項「SpacesページへのEBSポートレットの追加」

- 第54.3.3.4項「Spacesポートレット接続のテスト」

54.3.3.1 EBSポートレットのリモート・アクセスの準備

第54.3.2.1項「EBSポートレットのリモート・アクセスの準備」の説明に従って、ポートレット化するスタンドアロン・リージョンを準備します。

ポートレットをSpacesに追加する前に、メニューと関数の定義がキャッシュされるため、必ずApacheリスナーをバウンスしてください。

54.3.3.2 SpacesへのEBS WSRPプロデューサの登録

『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のポートレット・プロデューサの登録に関する項の説明どおり、EBS WSRPプロデューサを直接Spacesに登録できます。また、次の手順で説明するとおり、Fusion Middleware Controlを使用してEBS WSRPを登録できます。

Fusion Middleware Controlを使用してEBS WSRPプロデューサを登録するには:

1. 第54.3.3.1項「EBSポートレットのリモート・アクセスの準備」の説明に従って、Spacesで使用するEBSページのリモート・アクセスの準備を行います。

2. SpacesドメインのFusion Middleware Controlにログインします。

3. ナビゲーション・バーでSpacesを開き、「WebCenterポータル」メニューで「プロデューサの登録」を選択します。
「ポートレット・プロデューサの追加」ページが表示されます。

4. 接続名を入力し、「プロデューサ・タイプ」をWSRP Producerに設定して、ステップ1でコピーしたWSDLエンドポイントURLを「URLエンドポイント」フィールドに貼り付けます。

5. 「OK」をクリックし、プロデューサ接続が正常に作成されたことを確認します。

6. 引き続いて、第54.3.3.3項「SpacesページへのEBSポートレットの追加」の説明に従って、該当ポートレットをSpacesページに追加します。

54.3.3.3 SpacesページへのEBSポートレットの追加

次の手順に従って、EBSリモート・プロデューサをSpacesで使用します。

1. Spacesにログインします。

2. EBSポータルの追加先となるページに移動するか、新規ページを作成します。

3. 「コンテンツの追加」をクリックして、コンポーザを開きます。

4. リソース・カタログから、「ポートレット」を選択します。
カスタム・カタログを作成済である場合、「ポートレット」が表示されないことがあり、その場合はリソース・カタログに追加する必要はありません。リソース・カタログの管理の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリソース・カタログの使用に関する項の章を参照してください。

5. Fusion Middleware Controlに追加したポートレットをクリックします。

6. Spacesページに追加するEBSポートレットの「追加」をクリックします。

7. 「閉じる」をクリックして、コンポーザを閉じます。

8. Spacesページで、「編集」(鉛筆)アイコンをクリックします。

9. 「表示オプション」タブを開き、「Iframeにポートレットをレンダリングする」オプションをTrueに設定して、「OK」をクリックします。

10. 引き続いて、第54.3.3.4項「Spacesポートレット接続のテスト」の説明に従って、ポートレット接続をチェックします。

54.3.3.4 Spacesポートレット接続のテスト

次の手順に従って、コンテンツを変更して、その変更内容がEBSアプリケーションに表示されることを確認することで、Spacesポートレット接続をテストします。

1. EBSポートレットを追加したSpacesページで、なんらかの情報を変更します。この情報は、その変更内容をEBSアプリケーションで確認できるものである必要があります。

2. 変更を保存し、変更内容がEBSアプリケーションでも表示されることを確認します。

54.4 JD Edwardsアプリケーションの統合

この項では、JD EdwardsアプリケーションをWebCenter Portalアプリケーションに統合する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.4.1項「FrameworkアプリケーションへのJD Edwardsアプリケーションの統合」

- 第54.4.2項「Spacesへの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スタンドアロン・リージョンをFrameworkアプリケーションに追加する前に、JD Edwards内でそれらをポートレットとして外部で使用できるようにし、事前構成されたWSDLをwebclient.war/wsdlディレクトリに配置することで、リージョンをポートレット化する準備を整える必要があります。WSDL URLは、JD Edwards WSRPプロデューサを登録し、Frameworkアプリケーション・ページからそれを利用できるようにするために必要です。

54.4.1.2 FrameworkアプリケーションへのJD Edwards WSRPプロデューサの登録

次の手順に従って、新しいFrameworkアプリケーションを作成するか既存のFrameworkアプリケーションを開いて、JD Edwards WSRPプロデューサを登録してください。

1. リモート(WSRP) JD Edwardsポートレットの使用場所として、新しいFrameworkアプリケーションを作成するか、既存のFrameworkアプリケーションを開きます。

2. アプリケーション・リソースで、「接続」を右クリックし、「WSRPプロデューサ」を選択します。
WSRPポートレット・プロデューサの登録ウィザードの1ページ目(「プロデューサ名の指定」)が表示されます。

3. WSRPプロデューサの名前を入力し、「次へ」をクリックします。
「接続詳細の指定」ページが表示されます。

4. JD EdwardsプロデューサのWSDL URLを「WSDL URL」フィールドに貼り付けます。

5. 「次へ」→「終了」をクリックします。
これで、WSRPプロデューサが「接続」の下に表示されます。

6. 引き続いて、第54.4.1.3項「リモート・プロデューサを使用するためのJSFページの作成」の説明に従って、WSRPプロデューサを使用するためのJSFページを作成します。

54.4.1.3 リモート・プロデューサを使用するためのJSFページの作成

次の手順に従って、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アプリケーションのテスト」の説明に従って、該当ページを実行して、Frameworkアプリケーションで加えた変更内容がJD Edwardsアプリケーションで表示されることをテストします。

54.4.1.4 Frameworkアプリケーションのテスト

次の手順に従って、Frameworkアプリケーション内のJSFページのコンテンツを変更して、その変更内容がJD Edwardsアプリケーションで表示されることを確認することで、Frameworkアプリケーションをテストします。

1. 作成した.jspxページを実行します。

2. 実行中のページで、なんらかの情報を変更します。この情報は、その変更内容をJD Edwardsアプリケーションで確認できるものである必要があります。

3. 変更を保存し、変更内容がJD Edwardsアプリケーションでも表示されることを確認します。

54.4.2 SpacesへのJD Edwardsアプリケーションの統合

この項には次のサブセクションが含まれます:

- 第54.4.2.1項「プロデューサの登録」

- 第54.4.2.2項「SpacesページへのJD Edwardsポートレットの追加」

- 第54.4.2.3項「Spacesポートレット接続のテスト」

54.4.2.1 プロデューサの登録

『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のポートレット・プロデューサの登録に関する項の説明どおり、JD Edwards WSRPプロデューサを直接Spacesに登録できます。また、次の手順で説明するとおり、Fusion Middleware Controlを使用してJD Edwards WSRPを登録できます。

Fusion Middleware Controlを使用してJD Edwards WSRPプロデューサを登録するには:

1. 第54.4.1.1項「JD Edwardsアプリケーションのリモート・アクセスの準備」の説明に従って、Spacesで使用するJD Edwardsページのリモート・アクセスの準備を行います。

2. SpacesドメインのFusion Middleware Controlにログインします。

3. ナビゲーション・バーでSpacesを開き、「WebCenterポータル」メニューで「プロデューサの登録」を選択します。
「ポートレット・プロデューサの追加」ページが表示されます。

4. 接続名を入力し、「プロデューサ・タイプ」をWSRP Producerに設定して、ステップ1でコピーしたWSDLエンドポイントURLを「URLエンドポイント」フィールドに貼り付けます。

5. 「OK」をクリックし、プロデューサ接続が正常に作成されたことを確認します。

6. 引き続いて、第54.4.2.2項「SpacesページへのJD Edwardsポートレットの追加」の説明に従って、該当ポートレットをSpacesページに追加します。

54.4.2.2 SpacesページへのJD Edwardsポートレットの追加

次の手順に従って、JD Edwardsリモート・プロデューサをSpacesで使用します。

1. Spacesにログインします。

2. JD Edwardsポータルの追加先となるページに移動するか、新規ページを作成します。

3. 「コンテンツの追加」をクリックして、コンポーザを開きます。

4. リソース・カタログから、「ポートレット」を選択します。
カスタム・カタログを作成済である場合、「ポートレット」が表示されないことがあり、その場合はリソース・カタログに追加する必要はありません。リソース・カタログの管理の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリソース・カタログの使用に関する項の章を参照してください。

5. Fusion Middleware Controlに追加したポートレットをクリックします。

6. Spacesページに追加するJD Edwardsポートレットの「追加」をクリックします。

7. 「閉じる」をクリックして、コンポーザを閉じます。

8. Spacesページで、「編集」(鉛筆)アイコンをクリックします。

9. 「表示オプション」タブを開き、「Iframeにポートレットをレンダリングする」オプションをTrueに設定して、「OK」をクリックします。

10. 引き続いて、第54.4.2.3項「Spacesポートレット接続のテスト」の説明に従って、ポートレット接続をチェックします。

54.4.2.3 Spacesポートレット接続のテスト

次の手順に従って、コンテンツを変更して、その変更内容がJD Edwardsアプリケーションに表示されることを確認することで、Spacesポートレット接続をテストします。

1. JD Edwardsポートレットを追加したSpacesページで、なんらかの情報を変更します。この情報は、その変更内容をJD Edwardsアプリケーションで確認できるものである必要があります。

2. 変更を保存し、変更内容がJD Edwardsアプリケーションでも表示されることを確認します。

54.5 PeopleSoftアプリケーションの統合

この項では、PeopleSoftアプリケーションをWebCenter Portalアプリケーションに統合する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.5.1項「PeopleSoftアプリケーションの統合の概要」

- 第54.5.2項「PeopleSoftアプリケーションのリモート・アクセスの準備」

- 第54.5.3項「FrameworkアプリケーションへのPeopleSoftアプリケーションの統合」

- 第54.5.4項「SpacesへのPeopleSoftアプリケーションの統合」

- 第54.5.5項「PeopleTools向けのWS-Securityの設定」

54.5.1 PeopleSoftアプリケーションの統合の概要

この項では、PeopleSoftアプリケーションをWebCenter Portalアプリケーションに統合する利点と方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.5.1.1項「PeopleSoftの統合の理解」

- 第54.5.1.2項「PeopleSoftアプリケーションを統合するための要件」

54.5.1.1 PeopleSoft統合の理解

PeopleTools 8.48以降を使用すると、PeopleSoftアプリケーションをWSRPポートレットとしてWebCenter Portalなどのリモート・アプリケーション内で公開できます。これにより、PeopleSoftのごく一部の機能のみにアクセスする必要のあるユーザーは、PeopleSoftアプリケーション全体を開いたり習得したりすることなく、WebCenter Portalアプリケーションを通じてその機能にアクセスできるようになります。

54.5.1.2 PeopleSoftアプリケーションを統合するための要件

この項では、PeopleSoftオブジェクトをFrameworkアプリケーションおよびSpacesに統合するための前提条件を説明します。

- PeopleTools 8.48以降

- PeopleSoftへの自動サインオンのためにWS-Securityを使用している場合は、SAMLアサーションが有効になるためには、PeopleSoftとWebCenter Portalのサーバー上の日付/時刻が同期化されている必要があります。これについて問題がある場合は、PeopleSoftのWebサーバーの時刻をWebCenter Portalサーバーより少し進めてもかまいません。

- PeopleTools 8.5.1以前の場合は、WS-Securityを完全にサポートするためには、必要に応じてカスタムOWSMポリシーを作成して構成してください。詳細は、第54.5.5項「PeopleTools向けのWS-Securityの設定」を参照してください。

54.5.2 PeopleSoftアプリケーションのリモート・アクセスの準備

この項では、PeopleSoftアプリケーションをSpacesやFrameworkアプリケーションで使用できるように準備する方法を説明します。

PeopleSoftアプリケーションを準備するには:

1. 管理者としてPeopleSoftにログインします。

2. メイン・メニューからPeopleToolsを選択します。

3. PeopleToolsのメイン・メニューから、「従業員セルフサービス」→「ポータル」を開きます。

4. 「構造とコンテンツ」を選択します。

5. WebCenter Portalで使用するページが格納されているフォルダに移動して、「編集」をクリックしてそのページを開きます。
「コンテンツ参照管理」ページが表示されます。

6. 「一般」タブで、「WSRP作成可能」チェック・ボックスを選択します。

7. ページを保存します。

8. メイン・メニューから、WSRP作成を選択します。
「プロデューサによって提供されたポートレット」ページが表示されます。

9. 当該ページが公開されていることを確認してから、Webサービス・エンドポイントURLを開き、URL (WSDL)をコピーします。

10. ブラウザで新しいタブを開いて、コピーしたURLをナビゲーション・バーに貼り付けて、WSDLページにアクセスします。

11. そのURLをクリップボードにコピーします。

12. 第54.5.3項「FrameworkアプリケーションへのPeopleSoftアプリケーションの統合」および第54.5.4項「SpacesへのPeopleSoftアプリケーションの統合」の説明に従い、PeopleSoft WSRPプロデューサのSpacesまたはFrameworkアプリケーションへの統合へ進みます。

54.5.3 FrameworkアプリケーションへのPeopleSoftアプリケーションの統合

この項では、PeopleSoftアプリケーションと統合するFrameworkアプリケーションを作成または変更する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.5.3.1項「FrameworkアプリケーションへのPeopleSoft WSRPプロデューサの登録」

- 第54.5.3.2項「リモート(WSRP)・プロデューサを使用するためのJSFページの作成」

- 第54.5.5項「PeopleTools向けのWS-Securityの設定」

- 第54.5.3.3項「Frameworkアプリケーションのテスト」

54.5.3.1 FrameworkアプリケーションへのPeopleSoft WSRPプロデューサの登録

次の手順に従って、新しいFrameworkアプリケーションを作成するか既存のFrameworkアプリケーションを開いて、PeopleSoft WSRPプロデューサを登録してください。

1. リモート(WSRP) PeopleSoftポートレットの使用場所として、新しいFrameworkアプリケーションを作成するか、既存のFrameworkアプリケーションを開きます。

2. アプリケーション・リソースで、「接続」を右クリックし、「WSRPプロデューサ」を選択します。
WSRPポートレット・プロデューサの登録ウィザードの1ページ目(「プロデューサ名の指定」)が表示されます(図54-2を参照)。

図54-2「プロデューサ名の指定」

「図54-2「プロデューサ名の指定」」の説明

3. WSRPプロデューサの名前を入力し、「次へ」をクリックします。
「接続詳細の指定」ページが表示されます(図54-3を参照)。

図54-3「接続詳細の指定」

「図54-3「接続詳細の指定」」の説明

4. WSDL(以前にコピーしたURL)を「WSDL URL」フィールドに貼り付けて、「次へ」をクリックします。

5. WS-Securityを構成する必要がある場合は、「次へ」をクリックします。
WS-Securityの構成の詳細は、第54.5.5項「PeopleTools向けのWS-Securityの設定」を参照してください。

6. 「終了」をクリックします。
これで、WSRPプロデューサが「接続」の下に表示されます。

7. 引き続いて、第54.5.3.2項「リモート(WSRP)・プロデューサを使用するためのJSFページの作成」の説明に従って、WSRPプロデューサを使用するためのJSFページを作成します。

注意:

WSRPポートレットを公開するためには、WLSで圧縮が無効になっている必要があります。圧縮は、Weblogic 10.3.2と組み合せて実行しているProducer Web Serverではデフォルトで有効になっているため、各インスタンスで使用できる圧縮のServer Manager設定で無効にする必要があります。

54.5.3.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.3.3項「Frameworkアプリケーションのテスト」の説明に従って、該当ページを実行して、Frameworkアプリケーションで加えた変更内容がPeopleSoftアプリケーションで表示されることをテストします。

54.5.3.3 Frameworkアプリケーションのテスト

次の手順に従って、Frameworkアプリケーション内のJSFページのコンテンツを変更して、その変更内容がPeopleSoftアプリケーションで表示されることを確認することで、Frameworkアプリケーションをテストします。

1. 作成した.jspxページを実行します。

2. 実行中のページで、なんらかの情報を変更します。この情報は、その変更内容をPeopleSoftアプリケーションで確認できるものである必要があります。

3. 変更を保存し、変更内容がPeopleSoftアプリケーションでも表示されることを確認します。

54.5.4 SpacesへのPeopleSoftアプリケーションの統合

この項では、PeopleSoftアプリケーションをSpacesに統合する方法を説明します。

この項には次のサブセクションが含まれます:

- 第54.5.4.1項「SpacesへのPeopeSoft WSRPプロデューサの登録」

- 第54.5.4.2項「SpacesページへのPeopleSoftポートレットの追加」

- 第54.5.4.3項「Spacesポートレット接続のテスト」

54.5.4.1 SpacesへのPeopeSoft WSRPプロデューサの登録

『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のポートレット・プロデューサの登録に関する項の説明どおり、PeopleSoft WSRPプロデューサを直接Spacesに登録できます。また、次の手順で説明するとおり、Fusion Middleware Controlを使用してPeopleSoft WSRPを登録できます。

Fusion Middleware Controlを使用してPeopleSoft WSRPプロデューサを登録するには:

1. 第54.5.2項「PeopleSoftアプリケーションのリモート・アクセスの準備」の説明に従って、Spacesで使用するPeopleSoftページのリモート・アクセスの準備を行います。

2. SpacesドメインのFusion Middleware Controlにログインします。

3. ナビゲーション・バーでSpacesを開き、「WebCenterポータル」メニューで「プロデューサの登録」を選択します。
「ポートレット・プロデューサの追加」ページが表示されます。

4. 接続名を入力し、「プロデューサ・タイプ」をWSRP Producerに設定して、ステップ1でコピーしたWSDLエンドポイントURLを「URLエンドポイント」フィールドに貼り付けます。

5. 必要に応じて、 第54.5.5項「PeopleTools向けのWS-Securityの設定」の説明に従い、WebCenter Portal内でWS-Securityを構成します。

6. 「OK」をクリックし、プロデューサ接続が正常に作成されたことを確認します。

7. 引き続いて、第54.5.4.2項「SpacesページへのPeopleSoftポートレットの追加」の説明に従って、該当ポートレットをSpacesページに追加します。

54.5.4.2 SpacesページへのPeopleSoftポートレットの追加

次の手順に従って、PeopleSoftポートレットをSpacesページに追加します。

1. Spacesにログインします。

2. PeopleSoftポータルの追加先となるページに移動するか、新規ページを作成します。

3. 「コンテンツの追加」をクリックして、コンポーザを開きます。

4. リソース・カタログから、「ポートレット」を選択します。
カスタム・カタログを作成済である場合、「ポートレット」が表示されないことがあり、その場合はリソース・カタログに追加する必要はありません。リソース・カタログの管理の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリソース・カタログの使用に関する項の章を参照してください。

5. Fusion Middleware Controlに追加したポートレットをクリックします。

6. Spacesページに追加するPeopleSoftページの「追加」をクリックします。

7. 「閉じる」をクリックして、コンポーザを閉じます。

8. Spacesページで、「編集」(鉛筆)アイコンをクリックします。

9. 「表示オプション」タブを開き、「Iframeにポートレットをレンダリングする」オプションをTrueに設定して、「OK」をクリックします。

10. 引き続いて、第54.5.4.3項「Spacesポートレット接続のテスト」の説明に従って、ポートレット接続をチェックします。

54.5.4.3 Spacesポートレット接続のテスト

次の手順に従って、コンテンツを変更して、その変更内容がPeopleSoftアプリケーションに表示されることを確認することで、Spacesポートレット接続をテストします。

1. PeopleSoftポートレットを追加したSpacesページで、なんらかの情報を変更します。この情報は、その変更内容をPeopleSoftアプリケーションで確認できるものである必要があります。

2. 変更を保存し、変更内容がPeopleSoftアプリケーションでも表示されることを確認します。

54.5.5 PeopleTools向けのWS-Securityの設定

この項では、PeopleToolsリリースでサポートされているOWSMポリシーについて説明します。PeopleToolsリリース8.5.1(およびそれ以前)は、メッセージ内の送信WS-Securityヘッダーをサポートしていない点に注意する必要があります。ただし、一部のデフォルトのWebCenter Portal/OWSMポリシーでは、送信メッセージと受信メッセージの両方がセキュリティ保護されている必要があります。このギャップを埋めるために、必要に応じてカスタムOWSMポリシーを作成してください。この項では、カスタムWS-Securityポリシーを作成する必要があり、それらを構成するためにWebCenter Portal側での手順が必要となる異なる統合シナリオについても説明します。

次の点に注意してください。

- PeopleTools 8.5.1以前との統合シナリオの場合は、OWSMポリシーとして、メッセージ整合性付きWSS10 SAMLトークン、メッセージ保護付きWSS10 SAMLトークンまたはパスワード付きWSS10ユーザー名トークンを使用できます。

- PeopleTools 8.5.2との統合シナリオの場合、メッセージ整合性付きのWSS10 SAMLトークンまたはパスワードなしのWSS10ユーザー名トークン向けのWS-Securityの構成のみを使用します。

この項には次のサブセクションが含まれます:

- 第54.5.5.1項「メッセージ整合性付きのWSS10 SAMLトークン向けのWS-Securityの構成」

- 第54.5.5.2項「メッセージ保護付きのWSS10 SAMLトークン向けのWS-Securityの構成」

- 第54.5.5.3項「パスワード付きのWSS10ユーザー名トークン向けのWS-Securityの構成」

- 第54.5.5.4項「パスワードなしのWSS10ユーザー名トークン向けのWS-Securityの構成」

54.5.5.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セキュリティの構成に関する項の章に従って、WebCenter Portal/OWSMキーストアを構成します。

2. WebCenter Portalドメインの公開鍵が含まれた証明書を生成して、PeopleToolsの管理者に送信します。これにより、その証明書をPeopleToolsの構成にインポートできるようになります。

3. プロデューサの登録時に、wss10_saml_token_with_message_integrity_client_policyを選択します。

4. 引き続いて、WSRPポートレットをWebCenter Portalページに追加します。

54.5.5.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.5.1以前はWS-Securityヘッダーをレスポンスに格納して送信できないため(最初のcookie/get portlet handleコールのみにセキュリティ・ヘッダーが含まれており、後続のコールには含まれていません)、oracle/wss10_saml_token_with_message_protection_client_policyポリシーに基づいたカスタム・ポリシーを作成して添付する必要があります。

カスタム・ポリシーを作成するには:

1. Fusion Middleware Controlにログインし、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キーストアの公開証明書がWebCenterドメイン内で使用されているキーストアにインポートされていることを確認します。

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.5.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.5.1以前はWS-Securityヘッダーをレスポンスに格納して送信できないため(最初のcookie/get portlet handleコールのみにセキュリティ・ヘッダーが含まれており、後続のコールには含まれていません)、oracle/wss10_username_token_with_message_protection_client_policyポリシーに基づいたカスタム・ポリシーを作成して添付する必要があります。

カスタム・ポリシーを作成するには:

1. Fusion Middleware Controlにログインし、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キーストアの公開証明書がWebCenterドメイン内で使用されているキーストアにインポートされていることを確認します。

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.5.4 パスワードなしのWSS10ユーザー名トークン向けのWS-Securityの構成

(PeopleSoftポリシー: WSRPBaseService with UsernameToken, No Password Full Security Option With WSS Response)

この項では、PeopleToolsリリース8.5.2に対応したパスワードなしのユーザー名トークンに対するWSS 10のWS-Securityポリシー(oracle/wss10_username_id_propagation_with_msg_protection_client_policy)を構成する方法について説明します。

1. 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWS-Securityの構成に関する章の説明に従い、WebCenter Portal/OWSMキーストアを構成します。

2. WebCenter Portalドメインの公開鍵が含まれた証明書を生成して、PeopleToolsの管理者に送信します。これにより、その証明書をPeopleToolsの構成にインポートできるようになります。

3. PeopleSoftキーストアの公開証明書がWebCenterドメイン内で使用されているキーストアにインポートされていることを確認します。PeopleSoft WSRPプロデューサを登録する場合は、recptAliasパラメータの値として、インポートされたpeoplesft公開鍵の別名を使用します。

4. プロデューサを登録する場合は、wss10_username_id_propagation_with_msg_protection_client_policyを選択します。

5. 引き続いて、WSRPポートレットをWebCenter Portalページに追加します。

54.6 Oracle Business Intelligenceプレゼンテーション・サービスの統合

この項では、Oracle Business Intelligenceプレゼンテーション・サービス・カタログと統合するWebCenter Portalアプリケーションを、JDeveloperを使用して作成および構成する方法を説明します。実行時に、ユーザーはビジネス・インテリジェンス・オブジェクトをFrameworkアプリケーションやSpacesページに追加できます。

この項には次のサブセクションが含まれます:

- 第54.6.1項「Oracle Business Intelligenceプレゼンテーション・サービスの統合の概要」

- 第54.6.2項「Oracle BIプレゼンテーション・カタログに接続するための資格証明の構成」

- 第54.6.3項「FrameworkアプリケーションへのOracle Business Intelligenceプレゼンテーション・サービスの統合」

- 第54.6.4項「WebCenter Portal: SpacesへのOracle Business Intelligenceオブジェクトの統合」

54.6.1 Oracle Business Intelligenceプレゼンテーション・サービスの統合の概要

この項では、Oracle Business Intelligenceプレゼンテーション・サービス・カタログと統合するために、JDeveloperを使用してFrameworkアプリケーションを作成する方法とSpacesを構成する方法を説明します。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プレゼンテーション・サービスと統合するFrameworkアプリケーションを作成できます。実行時に、これらのアプリケーションはプレゼンテーション・サービス・カタログをWebCenter Portal - リソース・カタログに組み込みます。その後ユーザーは、ビジネス・インテリジェンス分析、ダッシュボード・ページ、ダッシュボードまたはスコアカード・コンポーネント(戦略マップ、戦略ツリー、KPIウォッチリスト、原因結果マップおよびカスタム・ビュー)を検索して、これらを自身のFrameworkアプリケーション・ページに追加できます。ビジネス・インテリジェンス・オブジェクトに含まれているフィルタ、プロンプトおよびアクションのリンクはすべて、Frameworkアプリケーション・ページまたはSpacesページ内で機能します。

実行時に、WebCenter Portalユーザーは、プレゼンテーション・サービス・カタログのフォルダを開いて参照し、分析のビューを表示できます。プレゼンテーション・サービス・カタログに表示されるビュー・タイプは、表、ピボット・テーブル、チャート、ファンネル・チャート、ゲージ、ナラティブ、ティッカおよびタイトルです。プレゼンテーション・サービス・カタログに表示されないビュー・タイプは、ビュー・セレクタ、列セレクタ、論理SQLおよび結果なしのビューです。

ユーザーは、ダッシュボード・フォルダを参照してダッシュボードと関連付けられたページを探すこともできますが、ダッシュボード・ページ内を参照して自身のコンポーネント(ダッシュボードに埋め込まれた分析など)を表示することはできません。ユーザーは、スコアカード全体を自身のFrameworkアプリケーション・ページに組み込むことはできません(スコアカードのコンポーネントのみを組み込むことができます)。

54.6.1.2 Oracle Business Intelligenceプレゼンテーション・サービスを統合するための要件

Oracle Business Intelligenceプレゼンテーション・サービスと統合するFrameworkアプリケーションを作成するには、Oracle JDeveloper 11g リリース1 (11.1.1.6)以降と、必要なOracle BI EE拡張機能およびWebCenter Portal拡張機能をインストール済である必要があります。

Frameworkアプリケーションを適切に作成するには、ライブラリ設定を構成して、weblogic.xmlファイルとweblogic-application.xmlファイルを更新して、セキュリティを適切に構成しておく必要があります。

FrameworkアプリケーションとSpacesの両方について、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition開発者ガイド』のOracle BI EEプレゼンテーション・サービス接続の作成に関する項に従って、BIアプリケーションへの接続を設定してセキュリティを構成する必要もあります。第54.6.2項「Oracle BIプレゼンテーション・カタログに接続するための資格証明の構成」の説明に従って、この接続用の資格証明を指定する必要もあります。

54.6.2 Oracle BIプレゼンテーション・カタログに接続するための資格証明の構成

設計時に、Oracle BIプレゼンテーション・カタログに接続するための資格証明を指定する必要があります。これらの資格証明を使用して、Oracle BIプレゼンテーション・カタログからビジネス・インテリジェンス・オブジェクト(分析、ダッシュボード、スコアカード・コンポーネントなど)のリストが取得されます。

このプロセスによって、プレゼンテーション・サーバーへのログインがアプリケーションの現在のユーザーと同じであること、すべてのアクセス・チェックが現在のユーザーとして実行されること、およびデータが現在のユーザーとしてフェッチされることが保証されます。ADFページに、ユーザーがアクセスできないビジネス・インテリジェンス・オブジェクトが含まれている場合は、ADFページは、ユーザーがこれらのオブジェクトにアクセスするための適切な権限を持っていないことを示すメッセージを返します。

セキュリティが有効になっている場合は、「偽装の実行」パラメータをtrueに設定する必要があります。

この項には次のサブセクションが含まれます:

- 第54.6.2.1項「BIImpersonateUserの作成」

- 第54.6.2.2項「BIImpersonateUserへの権限の付与」

54.6.2.1 BIImpersonateUserの作成

BIImpersonateUserユーザーを作成して、Oracle BIプレゼンテーション・サービス接続を利用し、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開発者ガイド』の偽装ユーザーの作成と使用方法に関する項を参照してください。

次の手順に従って、BIImpersonateUserユーザーを作成します。

1. お使いのOracle BI EEインスタンス用のWebLogic Serverを開きます。

2. 「ドメイン構造」ペインに移動して、「セキュリティ・レルム」を選択します。
「レルム」ペインが表示されます。

3. 「レルム」ペインで、<myrealm>を選択します。
「設定」ダイアログが表示されます。

4. 「設定」ダイアログで、「ユーザーとグループ」タブを開きます。

5. 「ユーザー」タブが表示されていることを確認して、「新規」をクリックします。

6. ユーザー名としてBIImpersonateUserと入力して、パスワードを入力します。

7. 「OK」をクリックします。

54.6.2.2 BIImpersonateUserへの権限の付与

次の手順に従って、Fusion Middleware Controlを使用してBIImpersonateUserに権限を付与します。

1. お使いのOracle BI EEインスタンス用のFusion Middleware Controlを開きます。

2. bifoundation_domainを探して選択します。
「bifoundation_domain」ペインが表示されます。

3. 「bifoundation_domain」ペインで、「WebLogicドメイン」リストをクリックして、Securityを強調表示して、「アプリケーション・ポリシー」を選択します。
「検索」ペインが表示されます。

4. 「検索するアプリケーション名の選択」フィールドのリストで、obiを選択します。

5. 「作成」をクリックします。
「権限の追加」ダイアログが表示されます。

6. 「権限クラス」フィールドで、oracle.security.jps.ResourcePermissionを選択します。「リソース名」フィールドで、oracle.bi.server.impersonateUserを選択します。

7. 「OK」をクリックします。

8. 「権限受領者」ペインで、「ユーザーの追加」クリックします。
「ユーザーの追加」ダイアログが表示されます。

9. 「使用可能なユーザー」リストでBIImpersonateUserを選択して、「移動」をクリックして「選択したユーザー」リストに移動します。

10. 「OK」をクリックします。

11. 「bifoundation_domain」ペインで、「OK」をクリックします。

12. 加えた変更内容が表示されない場合は、次のサーバーを停止して再起動します。

- Oracle BI EEサーバー

- Oracle BI EEプレゼンテーション・サーバー

- WebLogic Server

54.6.3 FrameworkアプリケーションへのOracle Business Intelligenceプレゼンテーション・サービスの統合

この項では、必要なBI拡張機能をインストールして、Oracle Business Intelligenceプレゼンテーション・サービスと統合する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プレゼンテーション・サービス・カタログにアクセスできるFrameworkアプリケーションを作成または変更します。この手順を実行する前に、第54.6.2項「Oracle BIプレゼンテーション・カタログに接続するための資格証明の構成」の説明に従って、BIImpersonateUserをすでに作成している必要があります。

この項には次のサブセクションが含まれます:

- 第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ページの作成

次の手順に従って、Frameworkアプリケーションを作成して、JSFページを追加します。

FrameworkアプリケーションとJSFページを作成するには:

1. Oracle JDeveloperで、新しいWebCenter Portal - Framework applicationを作成します(「標準ポータル機能のアプリケーションの構成」チェック・ボックスを必ず選択してください)。
この場合のユーザー名/パスワードはBIImpersonateUser/<password>である必要があり、<password>はこのユーザーを作成したときに設定したパスワードです。

2. 『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition開発者ガイド』のSSLを構成してOracle BI EEプレゼンテーション・サービス接続を作成する方法に関する項に従って、BIアプリケーションへの接続を作成します。
この接続を作成する際には、必ず「セキュリティが有効な場合に偽装を実行」をtrueに設定して、ユーザー名とパスワードを前述の偽装ユーザーの資格証明(BIImpersonateUser/<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プレゼンテーション・カタログを表示するためのアプリケーションの構成

プレゼンテーション・カタログをFrameworkアプリケーションのフォルダ・リストに追加するには、次の手順を実行します。実行時に、カタログが「WebCenter Portal - リソース・カタログ」に表示され、そこでユーザーはビジネス・インテリジェンス・オブジェクトを参照し、それらをFrameworkアプリケーション・ページに追加できます。

プレゼンテーション・カタログをFrameworkアプリケーションのフォルダ・リストに表示するには:

1. Oracle JDeveloperを使用して作成した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アプリケーションのテスト

この項では、次の手順を実行して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コンテンツをFrameworkアプリケーション・ページに追加する前に、Oracle BIプレゼンテーション・カタログに格納されているオブジェクトを「WebCenter Portal - リソース・カタログ」に追加する必要があります。

1. アプリケーションをブラウザで実行します。

2. 管理者としてFrameworkアプリケーションにログインします。

3. 「管理」をクリックします。
WebCenter Portal管理コンソールが表示されます。

4. 「リソース」タブを開きます。

5. 「リソース・カタログ」をクリックします。

6. 「リソース・カタログの作成」をクリックします。

7. 「名前」フィールドに、作成するカタログの名前を入力します。必要に応じて、このダイアログの他のフィールドに情報を入力します。

8. リソース・カタログの「編集」→「表示」をクリックします。

9. 「編集」メニューをクリックしてから、「編集」を選択します。

10. 「追加」メニューから、「ライブラリから追加」を選択します。

11. 「接続」をダブルクリックします。
「BIプレゼンテーション・サービス」フォルダが右側のフレームに表示されます。このフォルダを開いて、Oracle BIオブジェクトを表示します。

12. 追加するオブジェクトを探して選択します。

13. 「追加」をクリックして、選択したオブジェクトをカタログに追加します。

14. 「構成」タブを開いて、先ほど作成したリソース・カタログを「デフォルト・リソース・カタログ」として選択します。

54.6.3.3.2 実行時のビジネス・インテリジェンス・コンテンツの追加

次の手順に従って、ビジネス・インテリジェンス・コンテンツをFrameworkアプリケーションに追加することで、Frameworkアプリケーションをテストします。

1. 作成した.jspxページを実行します。

2. 実行中のページで、「編集」リンクをクリックして編集モードに入ります。

3. 「コンテンツの追加」をクリックします。
「WebCenter Portal - リソース・カタログ」が表示されます。

4. 「Oracle BI」フォルダに移動して開きます。

5. BI接続または接続先のホスト・マシンをクリックします。
カタログのコンテンツが表示されます。

6. .jspxページに追加するオブジェクトの「追加」リンクを探してクリックします。

7. アプリケーションによってこのオブジェクトが正しく追加されたことを確認します。

54.6.3.3.3 ビジネス・インテリジェンス・オブジェクトのプロンプト値の変更

次の手順に従って、分析またはダッシュボードのフィルタやプロンプトの値を変更することで、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プレゼンテーション・サービス接続を追加するか、BIImpersonateUserのユーザー名とパスワードを使用して、そのアプリケーションの既存の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プレゼンテーション・サービスと統合するFrameworkアプリケーションを保護できます。偽装ユーザーの詳細、および偽装ユーザーを実装してアプリケーションを保護する方法の詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition開発者ガイド』の偽装ユーザーを作成して使用する方法に関する項を参照してください。

54.6.4 WebCenter Portal: SpacesへのOracle Business Intelligenceオブジェクトの統合

次の手順に従って、WebCenter Portal: SpacesとBIオブジェクトの統合をテストします。

- 第54.6.4.1項「デプロイ後のプレゼンテーション・サービス接続の追加または変更」

- 第54.6.4.2項「Spacesリソース・カタログへのOracle BIオブジェクトの追加」

- 第54.6.4.3項「実行時のOracle BIコンテンツの追加」

- 第54.6.4.4項「ビジネス・インテリジェンス・オブジェクトのプロンプト値の変更」

- 第54.6.4.5項「ビジネス・インテリジェンス・タスク・フローの初期化パラメータの変更」

54.6.4.1 デプロイ後のプレゼンテーション・サービス接続の追加または変更

BIオブジェクトをSpacesに統合することを開始する前に、まずSpacesからBIサーバーへの接続を構成する必要があります。Oracle BI EEで提供されているADF MBeanを使用すると、デプロイ済のBI ADFアプリケーションやWebCenter Portal: Spacesアプリケーションへの新しい接続を追加できます。デプロイ済アプリケーションの既存の接続を変更することもできます。MBeanは、アプリケーションとともにデプロイされて、デプロイ後にFusion Middleware Controlを使用してアクセスできます。

次の手順を実行する前に、第54.6.2項「Oracle BIプレゼンテーション・カタログに接続するための資格証明の構成」の手順に従って、Oracle BIプレゼンテーション・カタログに接続するための資格証明をあらかじめ指定しておく必要があります。

注意:

SpacesアプリケーションとOracle Business Intelligenceアプリケーションの間で同じアイデンティティ・ストアが共有されていない場合は、該当するユーザーを両方のシステムで作成する必要があります。

次の手順に従って、アプリケーションのデプロイ後に接続を構成します。

1. Fusion Middleware Controlを開いて、次のいずれかの操作を実行して自身のWebLogicドメインを選択します。

- お使いのアプリケーションがBI ADFドメインにデプロイされている場合は、「アプリケーション・デプロイメント <お使いのドメイン>」ツリー・ノードを選択します。

- お使いのアプリケーションがSpacesドメインにデプロイされている場合は、「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/findOrCreateConnection」をクリックしてプレゼンテーション・サービス接続を作成します。
「操作: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

- BIImpersonateUserからの接続には、次の情報が必要です。

username = BIImpersonateUser
password = <password>

10. 「ナビゲーション」ペインのADFConnectionsフォルダで、「操作」タブを開き、「保存」をクリックして接続を保存します。

11. 「起動」をクリックすると、「確認操作が正常に実行されました。」というメッセージが表示されます。

54.6.4.2 Spacesリソース・カタログへのOracle BIオブジェクトの追加

Oracle BIコンテンツをSpacesページに追加する前に、Oracle BIプレゼンテーション・カタログに格納されているオブジェクトをSpacesリソース・カタログに追加する必要があります。

1. 管理者としてSpacesにログインします。

2. Spaces内で、「管理」をクリックします。
「Spaces管理」ページが表示されます。

3. 「リソース」タブを開きます。

4. 「リソース・カタログ」をクリックします。

5. 「リソース・カタログの作成」をクリックします。

6. 「名前」フィールドに、作成するカタログの名前を入力します。必要に応じて、このダイアログの他のフィールドに情報を入力します。

7. 「編集」→「表示」を選択して、このリソース・カタログを使用可能にします。

8. 「編集」メニューから、「編集」を選択します。

9. 「追加」メニューを選択して、「ライブラリから追加」を選択します。

10. 「接続」をダブルクリックします。
「BIプレゼンテーション・サービス」フォルダが表示されます。

11. このフォルダを開いてOracle BIオブジェクトを表示して、追加するオブジェクトを探して選択します。

12. 「追加」をクリックして、選択したオブジェクトをカタログに追加します。
スペースまたはFrameworkアプリケーションへのオブジェクトの追加を続行します。実行時のリソース・カタログの管理の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の リソース・カタログの使用に関する項を参照してください。JDeveloperにおけるリソース・カタログの管理の詳細は、第15章「リソース・カタログの作成と管理」を参照してください。

54.6.4.3 実行時のOracle BIコンテンツの追加

次の手順に従って、WebCenter Portal: Spacesページを作成して、このページにOracle BIオブジェクトを追加します。この手順を実行する前に、Oracle BIオブジェクトをWebCenter Portal: Spacesリソース・カタログに追加しておく必要があります。

1. Spacesにログインして、新しいスペースを作成するか、既存のスペースにアクセスします。

2. リソース・カタログをそのスペースのデフォルト・カタログとして設定します。

1. 「スペースの設定」→「一般」に移動して、第54.6.4.2項「Spacesリソース・カタログへのOracle BIオブジェクトの追加」で作成したカタログを「ページのリソース・カタログ」のデフォルト・カタログとして選択します。

2. 「適用」クリックします。

3. 「スペースに戻る」をクリックします。

3. 新しいページを作成します。

4. そのページで、「コンテンツの追加」をクリックします。

5. Oracle BIオブジェクトが格納されているフォルダに移動します。

6. 分析またはダッシュボードを選択して、「追加」をクリックします。
選択したオブジェクトが当該ページに追加されます。

7. 「閉じる」をクリックして「コンテンツの追加」ダイアログを閉じます。

54.6.4.4 ビジネス・インテリジェンス・オブジェクトのプロンプト値の変更

次の手順に従って、分析またはダッシュボードのフィルタやプロンプトの値を変更することで、WebCenter Portal: Spacesページをテストします。

1. 作成したページを開きます。

2. 実行中のページで、「ページ・アクション」をクリックしてから、「編集」リンクをクリックして編集モードを開始します。

3. フィルタまたはプロンプトを含む分析またはダッシュボードを追加します。ページへのOracle BIオブジェクトの追加の詳細は、第54.6.4.3項「実行時のOracle BIコンテンツの追加」を参照してください。

4. ページの編集モードを終了せずに、Spacesページを保存します。

5. Spacesページで、プロンプト値を変更して、「OK」をクリックします。

6. 編集モードを終了して、ページを保存して、アプリケーションによってプロンプト値が正しく適用されたことを確認します。

54.6.4.5 ビジネス・インテリジェンス・タスク・フローの初期化パラメータの変更

次の手順を使用して、ビジネス・インテリジェンス・タスク・フローの初期化パラメータをテストします。

1. 作成したページを開きます。

2. 実行中のページで、「ページ・アクション」をクリックしてから、「編集」リンクをクリックして編集モードを開始します。

3. タスク・フローの一部である分析またはダッシュボードを追加します。.jspxページへのビジネス・インテリジェンス・コンテンツの追加の詳細は、第54.6.4.3項「実行時のOracle BIコンテンツの追加」を参照してください。

4. ページの編集モードを終了せずに、Spacesページを保存します。

5. ビジネス・インテリジェンス・オブジェクトを見つけ、「編集」(スパナ)アイコンをクリックします。
「コンポーネント・プロパティ」ダイアログが表示されます。

6. Spacesページで、「パラメータ」タブを開いて、オブジェクトのパラメータを変更して、「OK」をクリックします。

7. 「パラメータ」タブを開き、オブジェクトのパラメータを変更して、「OK」をクリックします。

8. 編集モードを終了して、ページを保存して、アプリケーションによって変更後のパラメータ値が正しく適用されたことを確認します。

55 JDeveloperを使用したSpacesアプリケーションの拡張

WebCenter PortalのSpacesアプリケーションはブラウザベースのツールを使用してカスタマイズできますが、JDeveloperを使用してカスタマイズすることもできます。この章では、JDeveloperでSpacesアプリケーションおよびSpacesリソースをカスタマイズする方法と、それらをSpacesアプリケーションで利用する方法について説明します。たとえば、カスタム・コードや追加のタスク・フローが含まれる新たな共有ライブラリのデプロイが必要になることがあります。または、スキン、ページ・テンプレート、ナビゲーションなどのSpacesリソースを、JDeveloperで編集することもあります。

次の項が含まれます:

- 第55.1項「Spaces開発用のワークスペースのダウンロード」

- 第55.2項「Spacesでの追加の共有ライブラリの指定」

- 第55.3項「Spacesアプリケーション用のリソースの開発」

対象読者

この項は、JDeveloperとWebCenter Portal: Framework拡張機能に関して基本的な知識があり、Spaces開発で高度なカスタマイズを実行する必要がある開発者が対象です。

55.1 Spaces開発用のワークスペースのダウンロード

Spaces拡張機能を開発するためのJDeveloperワークスペースは、Oracle Technology Networkからダウンロードできます。このワークスペースの名前はDesignWebCenterSpaces.jwsです。

Spaces開発ワークスペースをダウンロードするには:

1. Spacesアプリケーションがインストールおよび構成され、期待どおりに動作することを確認します。

2. Oracle JDeveloper 11g (11.1.1.6.0)をダウンロードおよびインストールします。
Oracle JDeveloper 11g (11.1.1.6.0)は、http://www.oracle.com/technetwork/developer-tools/jdev/downloads/jdeveloper11116-1377208.htmlからダウンロードして入手できます。

3. Oracle JDeveloper WebCenter Portal Frameworkおよびサービス・デザインタイム拡張機能をダウンロードおよびインストールします。

1. JDeveloperで、「ヘルプ」→「更新のチェック」を選択します。

2. 「次」をクリックし、再び「次」をクリックして、使用できるすべての更新を表示します。

3. 検索フィールドにたとえばwebcenterと入力して、リストをフィルタリングします。

図55-1 Oracle JDeveloper WebCenter Portal Frameworkおよびサービス・デザインタイム拡張機能のダウンロード

「図55-1 Oracle JDeveloper WebCenter Portal Frameworkおよびサービス・デザインタイム拡張機能のダウンロード」の説明

4. 「WebCenter Frameworkおよびサービス・デザインタイム」を選択します。

5. 「終了」をクリックします。

第3.2項「WebCenter PortalのOracle JDeveloper用拡張機能のインストール」も参照してください。

4. Spaces開発のZIPファイル(DesignWebCenterSpaces_PS6.zip)をOracle Technology Networkからダウンロードします。
http://download.oracle.com/otndocs/tech/webcenter/files/DesignWebCenterSpaces_PS6.zip

5. ローカルでコンテンツを解凍します(表55-1)。

表55-1 DesignWebCenterSpaces_PS6.zip - 解凍先フォルダ

解凍先フォルダ

説明

\DesignWebCenterSpaces

DesignWebCenterSpaces.jwsを含みます。

このワークスペースを使用することで、共有ライブラリ・リストを構成できます。つまり、Spacesアプリケーションで使用する様々なカスタマイズ(カスタムjavaコード、カスタム・タスク・フローなど)が含まれる、1つ以上の共有ライブラリを指定できます。

ワークスペースは、Spacesリソースを編集およびアップロードする設計環境も提供します。

\copy_to_common

WebCenter Portal WLSTコマンドが含まれるcommonディレクトリを含みます。

WebCenter PortalのWLSTコマンドは、DesignWebCenterSpaces.jwsからSpacesアプリケーションへ、カスタマイズされたリソースを直接アップロードする際に必要です。

\copy_to_jdev_ext

oracle.webcenter.portal.jarを含みます。

Oracle JDeveloper WebCenter Portal Frameworkおよびサービス・デザインタイム拡張機能にとって必要な更新です。

6. 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/を使用します。

7. 新バージョンの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ファイルをここにコピーします。

8. JDeveloperが開いている場合は、これを再起動します。

55.2 Spacesでの追加の共有ライブラリの指定

この項には次のサブセクションが含まれます:

- 第55.2.1項「Spacesでの共有ライブラリのデプロイメントに関する必要な知識」

- 第55.2.2項「独自のカスタム・コードおよびタスク・フローの共有ライブラリでのデプロイ」

- 第55.2.3項「Spaces共有ライブラリ・リストの再ビルド」

55.2.1 Spacesでの共有ライブラリのデプロイメントに関する必要な知識

Spacesアプリケーションには、標準の共有ライブラリextend.spaces.webapp.warが含まれます。この.WARファイルには、Spacesカスタマイズが格納されている他のライブラリを参照できるデプロイメント・ディスクリプタ(weblogic.xml)が含まれています。

したがって、複数のソースから様々な共有ライブラリにデプロイされるカスタム・コードまたはタスク・フローがある場合は、図55-2に示すように、それらをextend.spaces.webapp共有ライブラリ・リストに追加できます。

図55-2 extend.spaces.webapp.warでのカスタム共有ライブラリの参照

「図55-2 extend.spaces.webapp.warでのカスタム共有ライブラリの参照」の説明

この開発モデルは、開発者、顧客、パートナなど、複数のコントリビュータからの追加の共有ライブラリをSpacesで簡単に利用できる手段を提供するものです。

Spaces拡張機能を含む新しい共有ライブラリをデプロイする場合は必ず、Spaces共有ライブラリの依存性リストを変更し、extend.spaces.webapp.warを再デプロイする必要があります。図55-3は、このプロセスを示しています。

図55-3 概要 - Spacesでの追加の共有ライブラリの指定

詳細は、第55.2.2項「独自のカスタム・コードおよびタスク・フローの共有ライブラリでのデプロイ」および第55.2.3項「Spaces共有ライブラリ・リストの再ビルド」を参照してください。

55.2.2 独自のカスタム・コードおよびタスク・フローの共有ライブラリでのデプロイ

開発者は、Spacesアプリケーションの拡張機能を作成し、それをADFライブラリJARでパッケージ化し、共有ライブラリとしてデプロイして、Spacesで使用可能にできます。たとえば、次のことが可能です。

- JDeveloperでカスタム・コードを開発し、それをSpacesアプリケーションで使用できるようにします。

- JDeveloperでカスタム・タスク・フローを開発し、それをSpacesアプリケーションで使用できるようにします

すぐに作業を開始できるようにサンプルのワークスペースが用意されており、そのワークスペースで拡張機能を開発し、カスタム・コードが含まれるSpaces共有ライブラリをビルドおよびデプロイできます。

注意:

共有ライブラリには他の共有ライブラリを含めることができます。このアプローチの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverアプリケーションの開発』の共有Java EEライブラリ・ファイルのアセンブルに関する項を参照してください。

サンプル・ワークスペースSampleWebCenterSpacesExtension.jwsにはサンプルの拡張機能とスクリプトが含まれており、これらを使用してSpaces用のカスタム・コードをデプロイできます。詳細は、Oracle Technology Network (http://www.oracle.com/technetwork/index.htm)から付随するホワイトペーパー「Using Spaces Extension Samples (11.1.1.6.0)」をダウンロードしてください。

55.2.3 Spaces共有ライブラリ・リストの再ビルド

Spaces拡張機能を含む新しい共有ライブラリをデプロイする場合は必ず、Spaces共有ライブラリの依存性リストを更新し、extend.spaces.webapp.warを再デプロイする必要があります。

この項では、次の操作について説明します。

- 共有ライブラリ・リストの編集

- ビルドおよびデプロイ・オプションの設定(config.properties)

- 共有ライブラリ・リストのビルドおよびデプロイ(extend.spaces.webapp.war)

- 共有ライブラリのデプロイメントのトラブルシューティング

- 前の共有ライブラリ・リストの回復

55.2.3.1 共有ライブラリ・リストの編集

Spaces共有ライブラリの依存性リストを構成するweblogic.xmlが含まれる、extend.spaces.webapp.warという共有ライブラリをビルドおよびデプロイするには、WebCenterSpacesExtensionLibraryプロジェクトを使用します。

1. Spaces開発ワークスペースをダウンロードして解凍します。
第55.1項「Spaces開発用のワークスペースのダウンロード」を参照してください。

2. JDeveloperで、解凍先のディレクトリに移動し、DesignWebCenterSpaces\DesignWebCenterSpaces.jwsを開きます(図55-4)。

図55-4 DesignWebCenterSpacesワークスペース内のプロジェクト

3. WebCenterSpacesExtensionLibraryプロジェクトを開きます。

4. Resources\WebCenterSpacesExtensionLibrary\public_html\WEB-INFの下のweblogic.xmlへ移動します(図55-5)。
デフォルトでは、このファイルは空白で、ファイルには追加の共有ライブラリはリストされていません。

図55-5 WebCenterSpacesExtensionLibrary - デフォルトのweblogic.xml

5. Spacesで使用する共有ライブラリごとに<library-ref>エントリを追加します。
たとえば、図55-6に示すように単一のライブラリ・エントリを含めることができます。

<library-ref>
<library-name>com.mycompanyname.shared.lib.1</library-name>
</library-ref>

図55-6 weblogic.xml - 単一の共有ライブラリ・リファレンス

または、図55-7に示すように、複数の共有ライブラリを参照できます。

<library-ref>
<library-name>com.mycompanyname.shared.lib.1</library-name>
</library-ref>
<library-ref>
<library-name>com.mycompanyname.shared.lib.2</library-name>
</library-ref>
<library-ref>
<!--reference to the shared library (custom.wencenter.spaces.war) that
includes customizations from WebCenter 11gR1 11.1.1.3.0 or earlier-->
<library-name>custom.webcenter.spaces</library-name>
</library-ref>

図55-7 weblogic.xml - 複数の共有ライブラリ参照

注意: WebCenter Spacesの以前のリリース(11.1.1.3.0以前)用に開発されたカスタム拡張機能を使用する場合は、図55-7に示すように、古い共有ライブラリcustom.webcenter.spacesの名前をweblogic.xmlに指定します。

6. 参照する各共有ライブラリがSpaces管理対象サーバーにデプロイされていることを確認します。

次の項では、共有ライブラリ・リスト(extend.spaces.webapp.war)のビルドおよびデプロイ・オプションを設定する方法について説明します。

55.2.3.2 ビルドおよびデプロイ・オプションの設定(config.properties)

共有ライブラリ・リストをビルドし、extend.spaces.webapp.warをSpaces管理対象サーバーにデプロイする前に、環境およびWebCenter Portalインストールに関するいくつかの情報を構成ファイルconfig.propertiesに指定する必要があります。

extend.spaces.webapp共有ライブラリのビルドおよびデプロイ・プロパティを設定するには:

1. DesignWebCenterSpaces.jwsを開きます。
第55.1項「Spaces開発用のワークスペースのダウンロード」も参照してください。

2. WebCenterSpacesExtensionLibraryプロジェクトを開きます。

3. config.propertiesを開きます。

4. 表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)です。

extending.spaces.home.dir

Spaces開発ワークスペース・ディレクトリへのパス。

たとえば、C:\DesignWebCenterSpacesです。

oracle.jdeveloper.ojdeploy.path

ojdeploy.exe (Windows)またはojdeploy (Linux)へのパス。

wls.port

WebLogic Server管理コンソールが実行されているポート番号

wls.host

Spacesアプリケーションが実行され、カスタム共有ライブラリがデプロイされるホスト・マシン

wls.userkey

管理パスワードを格納しているファイルの名前と場所。

config.propertiesには、WLSTを使用してファイルを生成する方法についての記述があります。このファイルは、適切かつアクセス可能な任意の場所にコピーできます。

wls.userconfig

管理ユーザーの詳細を格納しているファイルの名前と場所。

config.propertiesには、WLSTを使用してファイルを生成する方法についての記述があります。このファイルは、適切かつアクセス可能な任意の場所にコピーできます。

wls.target

Spaces共有ライブラリがデプロイされている管理対象サーバー。たとえば、WC_Spacesです。

クラスタ環境では、WC_Spaces1,WC_Spaces2のように、サーバーのカンマ区切りリストを入力します。

wls.webcenter.app.target

Spacesアプリケーション(webcenter.ear)がデプロイされた管理対象サーバー。たとえば、WC_Spacesです。

クラスタ環境では、WC_Spaces1,WC_Spaces2のように、サーバーのカンマ区切りリストを入力します。

webcenter.app.name

Spacesアプリケーションの名前。常にwebcenterです。

restart.implementation.version.suffix

増分式の実装バージョン番号を制御。

5. 更新内容をconfig.propertiesに保存します。

config.propertiesへの更新は即時に適用されるため、JDeveloperを再起動する必要はありません。

次の項では、共有ライブラリ・リストextend.spaces.webapp.warをビルドおよびデプロイする方法について説明します。

55.2.3.3 共有ライブラリ・リストのビルドおよびデプロイ(extend.spaces.webapp.war)

共有ライブラリ・リスト(weblogic.xml)を変更した場合は、extend.spaces.webapp.war共有ライブラリを再ビルドおよび再デプロイする必要があります。

共有ライブラリ・リストをビルドおよびデプロイするには:

1. JDeveloperでDesignWebCenterSpaces.jwsを開きます。
第55.1項「Spaces開発用のワークスペースのダウンロード」も参照してください。

2. WebCenterSpacesExtensionLibraryプロジェクトを開きます。

3. 環境の詳細をconfig.propertiesにまだ指定していない場合は、その指定を行います。
第55.2.3.2項「ビルドおよびデプロイ・オプションの設定(config.properties)」も参照してください。

4. extend.spaces.webapp.warを再ビルドするには、「Antを実行」ドロップダウン・メニューを開き、clean-stageを選択します(図55-8)。

図55-8 カスタマイズされたWebCenter Portal: Spaces拡張ライブラリのビルド

これによって、共有ライブラリ・リストextend.spaces.webapp.warの新バージョンが生成されます。新しいWARに関連付けられた実装バージョン番号は、次のMANIFEST.MFに保存されます。

<解凍先ディレクトリ>/DesignWebCenterSpaces/WebCenterSpacesExtensionLibrary/META-INF/MANIFEST.MF

5. Spaces共有ライブラリ・リストを再デプロイするには、「Antを実行」ドロップダウン・メニューを開き、deploy-shared-libを選択します。

新しいバージョンの共有ライブラリ・リストがSpaces管理対象サーバーにデプロイされます。新しいデプロイメントを確認するには、WLS管理コンソールにログインし、デプロイメントの概要ページへ移動して実装バージョンを確認します。つまり、次のように移動します。

「デプロイメント」→「extend.spaces.webapp」→「概要」

最新バージョンがアクティブでない場合は、第55.2.3.5項「共有ライブラリのデプロイメントのトラブルシューティング」を参照してください。

55.2.3.4 前の共有ライブラリ・リストの回復

最新の共有ライブラリ・リストに問題がある場合、またはなんらかの理由で以前のバージョンに戻る必要がある場合は、WLS管理コンソールを使用して、現在のバージョンをアンデプロイ(削除)し、前のバージョンに戻ることができます。

不要な共有ライブラリ・バージョンを削除することもできます。変更、ビルド、デプロイ、テストを何度も繰り返した場合、デフォルトでは、各増分バージョンが保持されます。Spacesアプリケーションでは共有ライブラリの最新バージョンのみを使用するため、必要に応じて旧バージョンをクリーンアップまたは削除できます。

最新バージョンをアンデプロイする場合は、その前に、Spacesアプリケーションが実行されている管理対象サーバーを停止する必要があります。最新バージョンを削除したら、管理対象サーバーを再起動します。

注意: 元のextend.spaces.webapp共有ライブラリ(バージョン11.1.1)があれば必要に応じてデフォルト・バージョンに戻ることができるため、これは削除しないことをお薦めします。

1. 次のスクリプトを実行して、Spacesアプリケーションがデプロイされている管理対象サーバーを停止します。

- UNIX: DOMAIN_HOME/bin/stopManagedWeblogic.sh

- Windows: DOMAIN_HOME\bin\stopManagedWeblogic.cmd

2. WLS管理コンソールにログインし、デプロイメントの概要ページ(「デプロイメント」→「extend.spaces.webapp」→「概要」)に移動し、最新バージョンの共有ライブラリを削除します。
デフォルトのSpaces展開に戻るには、元のextend.spaces.webapp.war共有ライブラリに戻ります。つまり、extend.spaces.webapp.warバージョン11.1.1以外のすべてバージョンのSpaces共有ライブラリを削除します。

3. 次のスクリプトを実行して、Spacesアプリケーションがデプロイされている管理対象サーバーを起動します。

- UNIX: DOMAIN_HOME/bin/startManagedWeblogic.sh

- Windows: DOMAIN_HOME\bin\startManagedWeblogic.cmd

55.2.3.5 共有ライブラリのデプロイメントのトラブルシューティング

- デプロイメントが正常に行われたにもかかわらず、デプロイメント後に変更が反映されない。
Spacesアプリケーションは、常に最新バージョンの共有ライブラリを使用します。MANIFEST.MF内の実装バージョンが、WLS管理コンソールに表示される実装バージョンに一致することを確認します。

たとえば、<UnzipDir>/DesignWebCenterSpaces/WebCenterSpacesExtensionLibrary/META-INF/MANIFEST.MF内の値が、WLS管理コンソールの「デプロイメント」→「extend.spaces.webapp」→「概要」に表示される値と同じであることを確認します。

- 「Security: 090219」エラーが表示されます。

weblogic.security.internal.encryption.EncryptionServiceException: weblogic.security.internal.encryption.EncryptionServiceException: weblogic.security.internal.encryption.EncryptionServiceException:
[Security:090219]Error decrypting Secret Key com.rsa.jsafe.JSAFE_InputException: Invalid input length for decryption. Should be a multiple of the block size - 8

wls.userconfigおよびwls.userkeyが両方ともconfig.propertiesファイル内に正しく設定されており、指定されている両方のセキュリティ・ファイルがアクセス可能であることを確認します

- 「DeployerException: Task 9 failed」が表示されます。

weblogic.Deployer$DeployerException: weblogic.deploy.api.tools.deployer.DeployerException: Task 9 failed: [Deployer:149117]deploy library custom.webcenter.spaces [LibSpecVersion=11.1.1.2,LibImplVersion=11.1.1.2.5] on AdminServer,WC_Spaces.

このエラーは、新しいデプロイメントと既存のデプロイメントの実装バージョンが同一の場合に発生します。WLS管理コンソールを使用して現在の実装バージョンを確認し、config.properties内のrestart.implementation.version.suffixプロパティをこの値に変更します。共有ライブラリを再ビルドおよび再デプロイすると、実装バージョンは1ずつ増分します。

- 「ReDeploy Spaces Failed」が表示されます。

Failed to redeploy the application with status failed
Current Status of your Deployment:
Deployment command type: redeploy
Deployment State     : failed
Deployment Message: weblogic.application.ModuleException:[exec] No stack trace available.
#########  ReDeploy Spaces Failed

Spacesアプリケーションのデプロイ先の管理対象サーバーを再起動します。

- 「java.lang.IllegalArgumentException」が表示される。
Spacesアプリケーションのデプロイ先の管理対象サーバーを再起動します。

- デプロイメントがハングします。
デプロイメント・フェーズ(「Antターゲットの実行」→deploy-shared-lib)中に問題が発生してプロセスがハングする場合は、JDeveloper内からAntプロセスを終了または停止してから、Spacesアプリケーションの管理サーバーおよび管理対象サーバーを再起動します。

- 新しくデプロイされたSpaces共有ライブラリがアクティブでません。
新しくデプロイされた共有ライブラリがアクティブでない場合は、WLS管理コンソールを使用して、アクティブでない共有ライブラリのバージョンを手動で削除してから、Spaces共有ライブラリを再ビルド(「Antターゲットの実行」→「clean-dist」)および再デプロイ(「Antターゲットの実行」→「deploy-shared-lib」)します。

- クラスタ環境でのwebcenter.earの再デプロイは失敗します。
場合によって、webcenter.earの再デプロイは失敗することがあります。すべての管理対象サーバーを再起動するか、5分後にもう一度再デプロイを試してください(「Antターゲットの実行」→「deploy-shared-lib」)。

- クラスタ環境にカスタム共有ライブラリをデプロイした後、Spacesにアクセスできません。
クラスタにカスタム共有ライブラリをデプロイした後(「Antターゲットの実行」→「deploy-shared-lib」)、Spacesアプリケーションにアクセスできない場合は、すべての管理対象サーバーを再起動します。

- 「アクセスできるページのリストを表示しようとしてエラーが発生しました。管理者に連絡してください」がログイン後に表示されます。
Spacesアプリケーションのデプロイ先の管理対象サーバーを再起動します。

- 「WCS#2009.12.22.00.49.35: メンバーの取得中に致命的なエラーが発生しました。」が表示されます。
Spacesを再起動します。

55.3 Spacesアプリケーション用のリソースの開発

この項では、Spacesリソース開発の設計環境であるWebCenterSpacesResourcesプロジェクトについて説明します。このプロジェクトを通じて、JDeveloperで開発またはカスタマイズしたリソースを、Spacesアプリケーションにアップロードできます。

この項には次のサブセクションが含まれます:

- 第55.3.1項「ラウンドトリップ開発でのWebCenterSpacesResourcesプロジェクトの使用」

- 第55.3.2項「WebCenterSpacesResourcesプロジェクトを開いて参照」

- 第55.3.3項「Spacesアプリケーションへの直接アップロードの有効化」

- 第55.3.4項「JDeveloperでのSpacesリソースの編集」

- 第55.3.5項「Spacesアプリケーションへのリソースの直接アップロード」

- 第55.3.6項「Spacesリソースのアーカイブへのエクスポート」

- 第55.3.7項「リソースのラウンドトリップ開発のトラブルシューティング」

55.3.1 ラウンドトリップ開発でのWebCenterSpacesResourcesプロジェクトの使用

WebCenter Portalのラウンドトリップ開発機能は、アプリケーション全体を再デプロイせずにSpacesリソースを変更できる、簡単で便利な手段を提供します。ラウンドトリップ開発とは、デプロイされたアプリケーションからリソースをダウンロードし、それをJDeveloperにアップロードしてメンテナンスや拡張を行う機能および手法です。変更したリソースはSpacesアプリケーションにアップロードしてすぐに使用したり、テストしたりできます。

Spacesには標準で、スキン、ページ・テンプレートなど、すぐに使用または変更できるいくつかのデフォルトのリソースが用意されています。Spacesの使用方法を簡単にするために、Spaces内でリソースを作成および編集するための組込み機能は、意図的に多少制限されています。リソース要件がSpacesアプリケーションの編集機能を超える場合は、リソース開発を目的として特別に設計されている - WebCenterSpacesResourcesというJDeveloperプロジェクトを使用して、リソースを開発できます。

このプロジェクトを使用して、カスタム・スキン、ページ・テンプレート、ページ・スタイル、ナビゲーション、コンテンツ表示テンプレート、マッシュアップ・スタイル、リソース・カタログを作成および管理することをお薦めします。プロジェクトは、いくつかのサンプル・リソースと、必要となる場合があるファイルおよびフォルダを提供しています。リソースをゼロから開発する必要はありません。Spacesアプリケーションから既存のリソースをエクスポートして、それらをJDeveloperで編集するか、または起点としてサンプルのいずれかを使用できます。

注意:

この章では、WebCenterSpacesResourcesプロジェクトを使用してリソースのカスタマイズを管理する方法について説明します。リソースの作成/開発の詳細は、第55.3.4.3項「Spacesリソースを作成する方法」を参照してください。

新しいリソースをデプロイする準備が整ったら、Spacesアプリケーションが実行されているホストの名前とポートをJDeveloperに指定することによって、JDeveloperから直接、ライブSpacesアプリケーションにリソースをアップロードできます。

注意: カスタマイズされたリソースを共有ライブラリにデプロイする必要はありません。

または、Spacesにログインして、リソース・マネージャを使用して新しいリソースをアップロードすることもできます。この方法を使用する場合は、リソースをエクスポート・アーカイブ(.ear)に保存する必要があります。

図55-9 WebCenterSpacesResourcesプロジェクトを使用したリソースの設計

55.3.2 WebCenterSpacesResourcesプロジェクトを開いて参照

1. Spacesワークスペースをダウンロードして解凍します。
第55.1項「Spaces開発用のワークスペースのダウンロード」を参照してください。

2. JDeveloperで、解凍先のディレクトリに移動し、DesignWebCenterSpaces\DesignWebCenterSpaces.jwsを開きます(図55-10)。
このワークスペースには、WebCenterSpacesResourcesという名前の、リソース開発専用のプロジェクトがあります。

図55-10 DesignWebCenterSpacesワークスペース内のプロジェクト

3. WebCenterSpacesResourcesプロジェクトを開きます。
WebCenterSpacesResourcesプロジェクトには、複数のファイルとフォルダが含まれています(図55-11)。

図55-11 JDeveloperでのWebCenterSpacesResourcesプロジェクトの参照

表55-3では、WebCenterSpacesResourcesプロジェクト内のファイルとフォルダについて説明しています。

表55-3 WebCenterSpacesResourcesプロジェクト内のファイルとフォルダ

構成プロパティ

説明

アプリケーション・ソース

サポート・ファイルおよびフォルダ。

\Web Content

Spacesリソースが含まれます。

\oracle\webcenter\siteresources

Spacesリソースが含まれているディレクトリ。このフォルダですべてのアプリケーション・リソースを開発および管理できます。

\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

アイコンやイメージなど、リソースが使用するイメージ/コンテンツ用のコンテンツ・ディレクトリです。

リソースをSpacesアプリケーションにアップロードすると、\sharedディレクトリ内のコンテンツがSpacesに自動的にコピーされます。

リソースが参照するすべてのファイルをこの\sharedディレクトリにコピーし、このようなコンテンツへのすべての参照がこの場所(たとえば、<af:image source="/oracle/webcenter/siteresources/scopedMD/shared/mylogo.gif id="pt_12">)を指していることを確認する必要があります。

\Page Flows

サポート・ファイルおよびフォルダ。

55.3.3 Spacesアプリケーションへの直接アップロードの有効化

ライブのSpacesアプリケーションまたはテスト環境で実行されているSpacesアプリケーション用のスキンやページ・テンプレートなどを作成または変更した場合、JDeveloperからアプリケーションへ、更新を直接アップロードできます。JDeveloper WebCenterSpacesResourcesプロジェクトからの直接更新を有効にするには、次の操作を行う必要があります。

- Spacesアプリケーションが実行されているホストの名前とポートをconfig.propertiesに指定します。

- Spacesにリソースをアップロードできる適切なロールおよび権限を持つことを確認します。次のものが必要です。

- WebLogic Serverロール - monitorおよび

- リソース権限 - たとえば、新しいスキンをアップロードするには、スキンの作成、編集、削除の権限を持っている必要があります。詳細は、表55-5を参照してください。

Spacesのホスト名とポートを構成すると、プロジェクト内で「ポータル・リソースのアップロード」オプションが使用できるようになります。JDeveloperセッションでこのオプションを初めて使用する場合は、Spacesのログイン名とパスワードを入力する必要があります。セキュリティ上の理由で、資格証明はこれ以降のセッションで保存されませんが、現在のJDeveloperセッションのメモリー内には保存されます。

Spacesにログインすると、Spacesリソースを管理できる適切な権限があることがもちろん前提ですが、リソースをアップロードできます。

注意:

初期設定では、デフォルトのFusion Middleware管理者(weblogic)のみが、必要なすべての権限を持ちます。

config.propertiesで接続プロパティを設定し、権限を付与するには:

1. 次の場所にあるconfig.propertiesを開きます。
<解凍先ディレクトリ>\DesignWebCenterSpaces\config.properties

2. 表55-4に示されている、JDeveloperおよびSpacesインストールに関する詳細を入力します。
config.propertiesファイルには、各プロパティに関する記述と例があります。提供されているデフォルト値は単なるサンプルで、インストール固有の値で置き換える必要があります。

表55-4 直接アップロードを有効にする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

Spacesアプリケーションが実行され、カスタム共有ライブラリがデプロイされるホスト・マシン

wc.host

Spacesアプリケーションが実行されているホスト・マシンの名前。

wc.port

Spacesアプリケーションが実行されているポート番号。

wc.protocol

Spaces URLプロトコルがhttpか、またはhttpsかを指定します。

wls.webcenter.app.target

Spacesアプリケーション(webcenter.ear)がデプロイされた管理対象サーバー。たとえば、WC_Spacesです。

クラスタ環境では、WC_Spaces1,WC_Spaces2のように、サーバーのカンマ区切りリストを入力します。

webcenter.app.name

Spacesアプリケーションの名前。常にwebcenterです。

3. 更新内容をconfig.propertiesに保存します。

4. 表55-5に示すとおり権限を確認し、必要に応じて要求します。
『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のスペースのロールと権限の管理に関する項も参照してください。

表55-5(続き)JDeveloperでリソースをアップロードおよび管理する権限

リソース

必須のロールまたは権限

タイプ

説明

アプリケーションレベルのリソース

- monitor

WebLogic Serverのロール

- このロールでは、JDeveloperからSpacesアプリケーションへリソースをアップロードするWLSTスクリプトを実行できます。

- Create, Edit, Delete <リソース・タイプ>

WebCenter Portal: Spaces権限

- この権限により、Spacesのアプリケーションレベル・リソースを作成および管理できます。

- Manage Configuration

WebCenter Portal: Spaces権限

- アプリケーションレベルのManage Configuration権限では、Spaces管理ページへのアクセス権が付与されます。
注意: WebCenter Portal: SpacesのAdmimistatorロールには、Create, Edit, Delete ResourcesとManage Configurationの両方の権限が含まれます。

スペースレベルのリソース

- monitor

WebLogic Serverのロール

- このロールにより、JDeveloperからSpacesアプリケーションにリソースをアップロードするWLSTスクリプトの実行が可能になります。

- Create, Edit, Delete Resources
(標準の権限モデル)
または

Create, Edit, Delete <resourcetype>
(拡張権限モデル)

WebCenter Portal: Spaces権限

- これらの権限により、特定のスペースのリソースを作成および管理できます。スペースに応じて標準または拡張のいずれかの権限が適用されます。

- Manage Configuration

WebCenter Portal: Spaces権限

- スペースレベルのManage Configuration権限では、特定のスペースのリソース管理ページへのアクセス権が付与されます。
注意: WebCenter Portal: SpacesのModeratorロールには、Create, Edit, Delete Resources/<リソース・タイプ>とManage Configurationの両方の権限が含まれています。

5. サンプル・リソースをアップロードして接続をテストし、Spacesでそのリソースを使用できることを確認します。
詳細は、第55.3.5項「Spacesアプリケーションへのリソースの直接アップロード」を参照してください。

また、第55.3.7項「リソースのラウンドトリップ開発のトラブルシューティング」も参照してください。

55.3.4 JDeveloperでのSpacesリソースの編集

Spacesリソースの拡張は、JDeveloperプロジェクトWebCenterSpacesResourcesで行うことをお薦めします。このプロジェクトには、次のSpacesリソースの作成、変更およびアップロードに必要なすべてが用意されています。

- ページ・テンプレート

- ナビゲーション

- ページ・スタイル

- スキン

- コンテンツ表示テンプレート

- リソース・カタログ

- マッシュアップ・スタイル

作業の開始方法

Spacesリソースをゼロから開発する必要はありません。多くの開発者は、Spacesアプリケーションから既存のリソースをダウンロードしてJDeveloperで編集します。SpacesリソースをJDeveloperに取り込むには、2種類の方法があります。1番目の方法は、サーバーからJDeveloperにリソースを直接ダウンロードする方法です。2番目の方法は、Spacesからリソースをエクスポートし、それをJDeveloperにインポートする方法です。

詳細は、次の項を参照してください。

- JDeveloperへのSpacesリソースの直接ダウンロード

- 『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のSpacesリソースのダウンロードに関する項

- JDeveloperへのSpacesリソースのインポート

「Spacesリソースを作成する方法」も参照してください。

アプリケーションレベル・リソースとスペースレベル・リソース

アプリケーションレベル・リソースとスペースレベル・リソースの違いは、その適用範囲にあります。Spacesアプリケーションでは、次のように見なされます。

- アプリケーションレベル・リソースは、すべてのスペースで使用できます。
すべてのアプリケーションレベル・リソースは、WebCenterSpacesResourcesプロジェクト・ディレクトリoracle/webcenter/siteresources/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23edで開発する必要があります。

アプリケーション・リソースをSpacesアプリケーションにアップロードするには、Application-Manage ConfigurationおよびCreate, Edit, Delete <Resource_Type>のSpaces権限が必要です。

- スペースレベル・リソースは、特定のスペースでのみ使用できます。
スペースをアップロードできるように、適切なネームスペースの下で特定のスペースのリソースを開発する必要があります。

oracle/webcenter/siteresources/scopedMD/<スペースの内部ID>

同様に、既存のスペースからダウンロードされJDeveloperにインポートされたリソースのみを同じスペースにアップロードして戻すことができます。このようなリソースは異なるスペースにアップロードできません。

リソースを特定のスペースにアップロードするには、Space-Manage Configuration権限と次のいずれかが必要です。

Create, Edit, Delete Resources(標準権限モデル)
Create, Edit, Delete <Resource_Type> (詳細権限モデル)

リソースをJDeveloperから直接アップロードする場合は、WebLogic Serverのmonitorロールも必要です。第55.3.3項「Spacesアプリケーションへの直接アップロードの有効化」を参照してください。

Spacesリソースを作成および編集する方法の詳細は、次を参照してください。

- 第55.3.4.1項「JDeveloperへのSpacesリソースの直接ダウンロード」

- 第55.3.4.2項「JDeveloperへのSpacesリソースのインポート」

- 第55.3.4.3項「Spacesリソースを作成する方法」

55.3.4.1 JDeveloperへのSpacesリソースの直接ダウンロード

Spacesリソースは、WebCenterSpacesResourcesプロジェクト内からJDeveloperへ直接ダウンロードできます。

1. 第55.3.3項「Spacesアプリケーションへの直接アップロードの有効化」に記載されているように、構成プロパティと権限が適切に設定されていることを確認します。第55.2.3.2項「ビルドおよびデプロイ・オプションの設定(config.properties)」も参照してください。

2. 図55-12に示すように、ナビゲータで「WebCenterSpacesResources」プロジェクトを右クリックし、「サーバーからのポータル・リソースのダウンロード」を選択します。

図55-12 「サーバーからのポータル・リソースのダウンロード」メニュー

「図55-12 「サーバーからのポータル・リソースのダウンロード」メニュー」の説明

3. 図55-13に示すように、「ポータル・リソースのダウンロード」ダイアログで、アプリケーションレベル・リソースまたはスペースレベル・リソースのダウンロードを選択します。これらの選択の詳細は、「アプリケーションレベル・リソースとスペースレベル・リソース」を参照してください。

図55-13 「ポータル・リソースのダウンロード」ダイアログ

「図55-13 「ポータル・リソースのダウンロード」ダイアログ」の説明

4. 使用可能なリソース名のリストをフィルタリングするには、図55-14に示すように、ダウンロードするリソースのタイプを「リソース・タイプ」メニューから選択します。

図55-14 ダウンロードするリソース・タイプの選択

「図55-14 ダウンロードするリソース・タイプの選択」の説明

5. 最後に、ダウンロードするリソースの名前を「リソース名」メニューから選択します。

6. 「OK」をクリックします。

55.3.4.2 JDeveloperへのSpacesリソースのインポート

Spacesリソース・アーカイブ(.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で適切なリソースを検索できるように、Spacesリソースと親スペース(スペースレベルのリソースのみ)の内部IDを把握している必要があります。Spacesアプリケーションでは、内部IDはリソースの「バージョン情報」ダイアログ(図55-15)に公開されます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のリソースについての情報の表示に関する項を参照してください。

図55-15 SpacesでのリソースIDの確認

内部IDは、表示名のように覚えやすいものではありません。インポートされたリソースを識別するには、「リソースの更新」オプションを使用してその表示名を確認できます。リソース・ディレクトリに移動し、リソース・ファイル(たとえば、mynavigation.xml、myskin.css、mypagetemplate.jpsx、mycatalog.xml)にドリルダウンし、右マウス・メニューから「リソースの更新」をクリックします(図55-16)。

図55-16 JDeveloperでのリソース表示名の確認

アーカイブからSpacesリソースをインポートするには:

1. アプリケーション・ナビゲータで、「WebCenterSpacesResources」プロジェクトを右クリックし、「ポータル・リソースのインポート」を選択します。

2. 「ポータル・リソースのインポート」ダイアログで、インポートするリソースを含むアーカイブ・ファイル(EAR)の名前を入力するか参照します。
アーカイブがまだ存在しない場合は、SpacesにログインしてリソースをEARファイルにダウンロードします。『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のSpacesリソースのダウンロードに関する項を参照してください。

3. 「OK」をクリックします。

4. リソースに移動します。

- アプリケーション・リソースは、次の場所の下にあります。
WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\
s8bba98ff_4cbb_40b8_beee_296c916a23ed

- スペースレベル・リソースは、次の場所の下にあります。
WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\<Space_GUID>

55.3.4.3 Spacesリソースを作成する方法

リソースの作成の詳細は、該当の章を参照してください。

- ページ・テンプレート - ページ・テンプレートの使用

- ページ・スタイル - ページ・スタイルの使用

- スキン - スキンの作成および管理

- ナビゲーション - ポータルでのナビゲーション・モデルのビルド

- コンテンツ表示テンプレート - コンテンツ・プレゼンタ表示テンプレートの作成

- リソース・カタログ - リソース・カタログの作成と管理

- マッシュアップ・スタイル - マッシュアップ・スタイルの使用

55.3.5 Spacesアプリケーションへのリソースの直接アップロード

Spacesアプリケーションが稼働している場合、JDeveloper環境からアプリケーションへ、新しいリソースまたは更新されたリソースを直接デプロイできます。

この方法でリソースをアップロードするには、Spacesアプリケーション内の適切なリソース管理権限を持っている必要があります。適切な権限がない場合は、リソースをアップロードできません。第55.3.3項「Spacesアプリケーションへの直接アップロードの有効化」も参照してください。

1. Spaces接続の詳細をconfig.propertiesにまだ構成していない場合はその構成を行い、適切なリソース管理権限を要求します。
第55.3.3項「Spacesアプリケーションへの直接アップロードの有効化」も参照してください。

2. JDeveloperでWebCenterSpacesResourcesプロジェクトを開き、アップロードするリソースに移動します。
たとえば、サンプルのアプリケーションレベル・ナビゲーションSampleNavigationをアップロードするには、次の場所に移動します(図55-17)。

WebCenterSpacesResources\Web Content\oracle\ webcenter\siteresources\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\navigation\gsrcc8dab1c_6161_4bb8_8764_127b4ecee01b

図55-17 Spacesリソース・フォルダへの移動

3. リソースが完全であることを確認します。

4. リソースが使用する、イメージやアイコンなど、すべてのコンテンツがコンテンツ・ディレクトリ/oracle/webcenter/siteresources/scopedMD/sharedにあり、このようなコンテンツへのすべての参照が、たとえば次のようにこの場所を指すことを確認します。
<af:image source="/oracle/webcenter/siteresources/scopedMD/shared/mylogo.gif id="pt_12">

5. Spacesにアップロードするリソースに関連付けられているファイルを右クリックし、「ポータル・リソースのアップロード」を選択します。
大部分のリソース・タイプでは、1つのファイルが関連付けられています。マッシュアップ・スタイルは例外で、2つのファイル(definition.xmlおよび.jsff)を持ちます。マッシュアップ・スタイルをアップロードするには、definition.xmlファイルを右クリックする必要があります。

6. 選択されたリソースがsharedディレクトリの下のコンテンツを参照する場合は、JDeveloperからコンテンツをアップロードするかどうかを指定します。

- 個々のファイルではなく、コンテンツ・ディレクトリ全体がアップロードされます。たとえば、スキンが2つのファイル(...\shared\skins\logos\mylogo.gifおよび...\shared\skins\icons\myicon.gif)を参照する場合、両方のディレクトリ(\logosおよび\icons)のコンテンツ全体がアップロードされます。

- アップロードの際は、リソースのコンテンツ・ディレクトリにあるすべてのファイルが目的のアプリケーションにアップロードされ、同じ名前の既存のファイルは上書きされます。コンテンツ・ディレクトリをアップロードしないことも選択できますが、全部かゼロかの選択のため、このリソースが参照するファイルのみをアップロードすることはできません。

7. 要求される場合は、Spacesユーザー名およびパスワードを入力し、「OK」をクリックします。
アップロード・プロセスが完了したことを伝えるメッセージが表示され、アップロード・ログ・ファイルupload_<resource_type_id>.logの名前と場所も表示されます。

図55-18 リソースのアップロード完了メッセージ

8. アップロード・ログ・ファイルを確認します。
次のメッセージは、アップロードが成功したことを示します。

Imported <一時ログ・ディレクトリ>\<リソース・タイプID>.ear

このメッセージが表示されない場合は、第55.3.7項「リソースのラウンドトリップ開発のトラブルシューティング」を参照してください。

9. Spacesアプリケーションにログインし、リソース・マネージャを介して期待どおりにリソースを使用できることを確認します。

1. Spacesにログインします。

2. 次のように、リソース・マネージャに移動します。
アプリケーションレベル・リソースを確認するには、次のURLに移動します。

http://host:port/webcenter/spaces/admin/resources

スペースレベルのリソースを確認するには、次のURLへ移動します。

http://host:port/webcenter/spaces/spaceName/admin/resources

3. 左側のパネルから該当のリソース・タイプを選択し、アップロードしたリソースが使用可能で、期待どおりに動作することを確認します。
依存イメージなどは、Spacesコンテンツ・ディレクトリに置かれている必要があります。イメージがない場合は、JDeveloperで該当のコンテンツ・ディレクトリにコピーしたことを確認します(/oracle/webcenter/siteresources/scopedMD/sharedの下)。

55.3.6 Spacesリソースのアーカイブへのエクスポート

Spacesアプリケーションでリソースの使用準備が整っている場合は、それを直接Spacesにアップロードすることもできれば、随時Spacesリソース・マネージャを使用して自分(または他の誰か)がアップロードできるようにリソースをEARファイル形式にエクスポートしておくこともできます。

Spacesリソースをエクスポートするには:

1. アプリケーション・ナビゲータで、リソース・ディレクトリに移動し、リソース・ファイル(たとえば、myskin.css、mypagetemplate.jpsx、mycatalog.xml)にドリルダウンします。

注意:

イメージ、アイコン、スタイル・シートなど、すべての依存コンテンツが/oracle/webcenter/siteresources/scopedMD/shared/にコピーされていて、このようなコンテンツへのすべての参照がこの場所を指すことを確認します(例: <af:image source="/oracle/webcenter/siteresources/scopedMD/shared/mylogo.gif id="pt_12">)。

2. 右マウス・メニューから「ポータル・リソースのエクスポート」をクリックします。

3. 「ポータル・リソースのエクスポート」ダイアログで、エクスポート・アーカイブ・ファイルのパスとファイル名を入力または参照します。たとえば、C:\myskin.earです。

4. 選択されたリソースがsharedディレクトリの下のコンテンツを参照する場合は、リソース・アーカイブにコンテンツ・ディレクトリを含めるどうかを指定します。
次のどちらかの操作を行います。

- 「コンテンツ・ディレクトリを含める」を選択して、イメージやアイコンなど、ポータル・リソースが参照するコンテンツを、エクスポート・アーカイブにエクスポートします。
リソースのコンテンツ・ディレクトリをエクスポートする前に、次の点を考慮してください。

- 個々のファイルではなく、コンテンツ・ディレクトリ全体がエクスポートされます。たとえば、スキンが2つのファイル(...\shared\skins\logos\mylogo.gifおよび...\shared\skins\icons\myicon.gif)を参照する場合、両方のディレクトリ(\logosおよび\icons)のコンテンツ全体がエクスポートされます。

- インポートでは、コンテンツ・ディレクトリにあるすべてのファイルが目的のSpacesアプリケーションにアップロードされ、同じ名前の既存のファイルは上書きされます。インポートの際にコンテンツ・ディレクトリをアップロードしないことも選択できますが、全部かゼロかの選択のため、この特定のリソース用の個別のファイルをアップロードすることはできません。

- 「いいえ」をクリックして、ポータル・リソースが参照する\sharedディレクトリの下のコンテンツを除外します。

5. 「OK」をクリックします。

リソース・アーカイブをSpacesにアップロードする手順は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のSpacesリソースのアップロードに関する項を参照してください。

55.3.7 リソースのラウンドトリップ開発のトラブルシューティング

トラブルシューティングに関するこの項には、次のサブセクションが含まれます:

- リソース・アップロード・ログ・ファイルの確認

- リソースをSpacesにアップロードできない - アクセスが拒否された

- リソースをSpacesにアップロードできない - java.lang.Exception

リソース・アップロード・ログ・ファイルの確認

リソースをSpacesアプリケーションにアップロードすると、進行状況の詳細がログ・ファイルに記録されます。ログ・ファイルの名前には、アップロードしているリソースのタイプと一意のIDが、upload_resource_type_id.logの形式で含まれます。たとえば、upload_siteTemplate_17283.logとなります。

ログ・ファイルの場所は、ローカルのtempディレクトリの設定によってそれぞれ異なります。ログ・ファイルの正確な場所は、次のような情報メッセージに表示されます。

図55-19 リソース・アップロード・ログ・ファイルの場所

次のログ・エントリは、アップロード・プロセスが成功したことを示します。

Imported <一時ログ・ディレクトリ>\<リソース・タイプID>.ear

権限が不足している場合は、次に説明する、「アクセスが拒否されました」エラーまたは「java.lang.Exception」エラーが表示されます。

リソースをSpacesにアップロードできない - アクセスが拒否された

monitorロールがない場合は、リソース・アップロード・ログ・ファイルに次のエラーが表示されます。

Operation: getScopeName(java.lang.String)  Detail: Access denied. Required roles: Admin, Operator, Monitor, executing subject: principals=[yourusername]

monitorロールはWeblogic Serverロールです。このロールにより、JDeveloperからSpacesアプリケーションにリソースをアップロードするWLSTスクリプトの実行が可能になります。WebLogic Server管理コンソールを使用してこのロールを付与するようSpaces管理者に依頼します。

リソースをSpacesにアップロードできない - java.lang.Exception

Spacesの任意のリソース、またはアップロードを試みている特定のタイプのリソースを管理する権限がない場合は、リソース・アップロード・ログ・ファイルに次のエラーが表示されます。

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)

スペース管理を使用して適切な権限を付与するようSpaces管理者に依頼します。または、アップロードしようとしているリソースが特定のスペース用の場合は、スペース・モデレータに連絡して必要な権限を要求してください。表55-5「(続き)JDeveloperでリソースをアップロードおよび管理する権限」も参照してください。

56 Oracle WebCenter Portal: Spacesとの統合

この章では、Spaces APIを使用して、WebCenter Portal: FrameworkアプリケーションにWebCenter Portal: Spaces機能を公開する方法について説明します。これらのAPIを使用すると、新しいスペースの作成、スペース・メンバーシップの管理、スペース情報の取得などをご使用のFrameworkアプリケーションから実行できます。

この章では、Spaces内のFrameworkアプリケーションなど、他のアプリケーションからの情報を公開する方法も説明します。

この章には次の項が含まれます:

- WebCenter Portal: Spacesの概要

- APIを使用したWebCenter PortalアプリケーションにおけるSpacesの公開

- WebCenter Portal: Spaces REST APIの使用方法

- Spacesにおけるエンタープライズ・アプリケーションの公開

注意:

Spaces API(この章で説明)を実装するカスタム構築されたタスク・フローは、WebCenter Portal: Frameworkアプリケーションにデプロイできますが、WebCenter Portal: Spacesにはデプロイできません。

対象読者

この項は、WebCenter Portal: FrameworkアプリケーションにSpaces機能を公開する開発者を対象としています。

56.1 WebCenter Portal: Spacesの概要

WebCenter PortalのSpacesアプリケーションは、Webベースのアプリケーションであり、WebCenter Portal: Framework、WebCenter Portalサービスおよびコンポーザを使用して構築されています。Spacesアプリケーションは、数千のユーザーに対応し、様々な言語を使用する多様な人々を含むポータル、コミュニティおよびソーシャル・サイトを迅速に作成するために必要なすべてのツールを備えています。図56-1は、一般的なSpacesホーム・ページを示しています。

図56-1 WebCenter Portal: Spaces

「図56-1 WebCenter Portal: Spaces」の説明

Spacesは、そのままで使用でき、個人およびグループによる作業およびコラボレーションの効率性を高める構成可能な作業環境を提供します。このアプリケーションは、個人およびグループの相互作用を管理するためのセルフサービス・ソリューションです。また、ドキュメント、グラフ、レポート、ポートレット、ビジネス・アプリケーション、サービス、その他のADFリソースまたはビューなどのページおよびリソースを追加することによって、ビジネス・ユーザーが集合し、情報を共有することを可能にする直感的なツールも提供します。

Spacesアプリケーションは、1つのアプリケーション内に、ホーム・スペースとグループ・スペースの2つの作業環境を提供します。ホーム・スペースは、各ユーザーにプライベート作業領域を提供し、ユーザーはそこに個人コンテンツを格納し、ビジネス・プロセスの割当てを表示してそれに対応し、彼または彼女の一意の作業日に関連する多数のその他のタスクを実行します。グループ・スペース(これ以降、スペースと呼ぶ)は、目的の分野または共通の目標を中心に編成した個別の作業領域をサポートします。

Spacesは、プロジェクト・チームや目的のコミュニティの構成とコラボレーションをサポートします。Spacesを使用すると人々は互いに仮想環境内で継続的な対話と情報共有を行い、特にソーシャル・ネットワークを形成できます。図56-2は、スペースの例を示しています。

図56-2 Standards - サンプル・スペース

「図56-2 Standards - サンプル・スペース」の説明

構造的には、スペースはページから構成されており、それらのページの多くは特定のサービス専用となっています。たとえば、「リスト」ページは、複数列のリストを作成し、公開する手段を提供します。「ドキュメント」ページは、グループ・コンテンツをアップロード、編成、管理するための中心的なライブラリを提供します。「検索」ページは、検索の保存および検索結果の管理のための機能を提供します。スペースでは、これらのページおよびその他のデフォルト・ページに加えて、権限のあるユーザーによって作成されたカスタム・ページがサポートされています。ページの作成は、様々な事前定義済レイアウトを使用することで簡単に行えます。ユーザーは、労力をほとんど使用することなく、彼らのチームまたはコミュニティ固有のニーズに適切に対応したページを提供できます。スペースの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

WebCenter Portalは、グループの目標のサポートにおいて様々な機能を提供するためにスペースによって使用できる様々なサービスを提供します。たとえば、ドキュメント・サービスは、コンテンツをアップロードおよび管理するための機能を提供し、ディスカッション・サービスは、ディスカッション・フォーラムを作成、管理およびディスカッション・フォーラムに参加するための機能を提供します。他のこれらのサービスのいくつかの例としては、イベント、リスト、お知らせ、および検索があります。Spacesは、これらのサービスによって生産的な共同作業環境となっています。サービスは、タスク・フローを介してこれらの機能のサブセットを公開します。タスク・フローは、特定のサービスから使用できる機能のすべてまたはサブセットを公開する再利用可能なビューです。たとえば、最近のドキュメント・タスク・フローは、最近、オープン、追加、またはなんらかの方法で影響を受けたドキュメントをリストすることで、ドキュメント・サービスを介して提供される機能のサブセットを提供します。

ユーザーは、すばやくスペースを取得し実行するために、デフォルト・テンプレートに基づくことができます。さらに、Spacesを使用することで、ユーザーはスペースをテンプレートに変換できるため、特定の対象者に適したスペースを設計し、他のユーザーが使用できるようにそれらをテンプレートとして提供できます。テンプレートの作成の詳細は『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の、カスタム・スペース・テンプレートの作成に関する項を参照してください。

Spacesは、任意のWSRP、Oracle PDK-Javaまたはページレット・プロデューサ(プロデューサが登録済である場合)のポートレットを使用できます。したがって、Frameworkアプリケーション向けに作成するポートレットは、すべてSpacesでも使用できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のポートレット・プロデューサの管理に関する項の章を参照してください。

56.2 APIを使用したWebCenter PortalアプリケーションにおけるSpacesの公開

この項には次のサブセクションが含まれます:

- Spaces APIの概要

- 事例1: 購買アプリケーションでSpaceを使用してサプライヤを評価する

- 事例2: カスタマ・サポート・センター・アプリケーションでSpaceを使用してカスタマ・エスカレーションを話し合う

- Spaces APIを使用するようにWebCenter Portalアプリケーションを設定する方法

- WebCenter PortalアプリケーションでSpacesの機能を提供する方法

- Spaces APIから発生した例外を処理する方法

- Spaces APIの詳細情報を見つける方法

- Spaces APIでのトラブルシューティングの問題

56.2.1 Spaces APIの概要

ユーザーは、WebCenter Portal: Frameworkアプリケーションを使用中に、特定のタスクを完了するためにSpacesが役立つと思われる状況に直面することがあります。そのようなケースでは、Spacesアプリケーションに切り替えるよりも、現在のアプリケーションのコンテキスト内に留まるほうがはるかに混乱が少ない場合があります。そのために、Spacesは、いくつかのAPIを介したその機能のサブセットへのアクセスを提供しています。これらのAPIを使用すると、強力なSpacesの機能をFrameworkアプリケーションに統合できます。

Spaces APIを使用すると、次のことを実行できます。

- スペースおよびスペース・テンプレートの作成および管理。スペースを作成および削除でき、カスタム属性を追加できます。詳細は、第56.2.5.1項「スペースおよびスペース・テンプレートの管理」を参照してください。

- スペース・メンバーシップの管理。スペース・メンバーを追加および削除できます。詳細は、第56.2.5.2項「スペース・メンバーシップの管理」を参照してください。

- スペースおよびスペース・テンプレートに関する情報の取得。たとえば、SpacesアプリケーションのURLや特定のスペースのURLを取得できます。また、スペースおよびスペース・テンプレート・メタデータも取得できます。詳細は、第56.2.5.3項「スペースおよびスペース・テンプレートの情報の取得」を参照してください。

Spaces APIは、いくつかのクラス内に含まれています。表56-1では、様々なクラスをリストし、各クラスのAPIの目的を説明しています。

表56-1 Spaces APIのクラス

クラス

含まれているAPIの用途

詳細

GroupSpaceWSClient

スペースおよびスペース・テンプレートの作成および管理

スペース・メンバーシップの管理

スペース情報の取得

第56.2.5項「WebCenter PortalアプリケーションでSpacesの機能を提供する方法」

GroupSpaceWSContext

APIをコールする前のコンテキストの確立

第56.2.4.4項「Spacesクライアント・コンテキストの設定」

GroupSpaceWSException

APIから発生した例外の管理

第56.2.6項「Spaces APIから発生した例外を処理する方法」

GroupSpaceWSMembers

スペース・メンバーに関する情報の取得

第56.2.5.3項「スペースおよびスペース・テンプレートの情報の取得」

GroupSpaceWSMetadata

スペース情報の取得

第56.2.5.3項「スペースおよびスペース・テンプレートの情報の取得」

Spacesは、様々なアプリケーションを保持できます。WebCenter Portal: Frameworkアプリケーション開発者の視点から、APIを介してSpacesを構築し、使用するシナリオを示す事例を2つ紹介します。

- 購買アプリケーションでは、購買マネージャは、新しいサプライヤの適性を話し合うスペースを作成できます。詳細は、第56.2.2項「事例1: 購買アプリケーションでSpaceを使用してサプライヤを評価する」を参照してください。

- カスタマ・サポート・センター・アプリケーションでは、サポート・アナリストが、カスタマ・エスカレーションに関して他のユーザーと共同作業をするためのスペースを作成できます。詳細は、第56.2.3項「事例2: カスタマ・サポート・センター・アプリケーションでSpaceを使用してカスタマ・エスカレーションを話し合う」を参照してください。

56.2.2 事例1: 購買アプリケーションでSpaceを使用してサプライヤを評価する

Oracle WebCenter Portal: Frameworkを使用して構築された購買アプリケーションについて考えてみます。このアプリケーションでは、サプライヤ、価格設定、リードタイムの要件、概算出荷時間、および実績を追跡します。

購買アプリケーションのユーザーは、サプライヤの候補を選択し評価できなければなりません。サプライヤの評価は共同プロセスで、会社の様々な領域からの人々が必要です。たとえば、設計エンジニアと製造担当者は購入するアイテムが必要な技術仕様を満たしていることを確認する必要があります。購買エージェントは価格、物流および契約について交渉できます。さらにマネージャまたはエグゼクティブは取引を承認する必要があります。購買アプリケーションはサプライヤ評価をどのように開始するでしょうか。

通常、購買マネージャが、製造部門から購買請求書を受け取ります。場合によっては、製造部門が必要とする期限内に、その必要分を従来のサプライヤが納品できないため、発注を完了できないことがあります。したがって、納期および価格設定要件を満たす新しいサプライヤを判別する必要があります。購買マネージャは、候補となるサプライヤをシステムに追加できますが、購買マネージャは、サプライヤを評価できるように、情報を整理して共有し、彼のチームの内外の人々と共同する方法を必要としています。

スペースは、この共同作業環境を提供できます。そのために、購買アプリケーションにはcreateGroupSpace APIへのコールが含まれており、それにより、図56-3に示すように、購買マネージャが、「スペースの作成」ダイアログを表示するリンク(「新規スペースの作成」)を、購買アプリケーションから直接クリックできます。

図56-3 スペース作成のリンクが含まれている購買アプリケーション

「図56-3 スペース作成のリンクが含まれている購買アプリケーション」の説明

購買マネージャがそのリンクをクリックすると、カスタム・ダイアログからいくつかの情報を要求されます。購買マネージャは、スペースの名前および説明を入力し、図56-4に示すようにテンプレート(Purchasing Projects)も選択します。Purchasing Projectsテンプレートによって、スペースは迅速に設定され、すぐに使用できます。たとえば、このテンプレートによって、どのサービスが必要であるか(イベント、ドキュメント・ライブラリなど)、および必要なカスタム・ページが定義されます。このAPIで、独自の「スペースの作成」ダイアログを作成できるため、独自のルック・アンド・フィールおよび用語を適用できます。

図56-4 カスタムの「スペースの作成」ダイアログ

「図56-4 カスタムの「スペースの作成」ダイアログ」の説明

このシナリオでは、購買マネージャは、テンプレート・リストからPurchasing Projectsテンプレートを選択します。別の方法は、購買アプリケーションがデフォルト・テンプレート値を渡すようにすることです。この追加のデフォルトにより、購買マネージャが検討すること(どのテンプレートを使用するか)が1つ減ります。サプライヤIDからスペースの名前を生成し、購買マネージャが詳細を何も入力しなくてもよいようにすることもできます。そうすれば、リンクのクリックのみでスペースを作成できます。

購買マネージャが「OK」をクリックすると、図56-5に示すような.新しいサプライヤ評価スペースが表示されます。

図56-5 サプライヤ評価スペース

「図56-5 サプライヤ評価スペース」の説明

図56-5は、イベント・カレンダ、グループに役立つことのあるドキュメント、お知らせの領域などを含むサプライヤ評価スペースのホーム・ページを示しています。これらの各領域はPurchasing Projectsテンプレートによって決定されます。さらに、スペースの作成元の購買アプリケーション・トランザクション・インスタンスへのリンクも提供されます。このリンク(「ベンダーの追加/更新」)をクリックすると、サプライヤShaker Distributionの「ベンダーの追加/更新」トランザクション画面が表示されます。

Spacesアプリケーションでは、購買マネージャが自動的にそのスペースのモデレータになります。モデレータは、スペースへのコンテンツの追加、ディスカッションの開始、メンバーの招待、関連するパーティとのコラボレーションを実行できます。サプライヤに関してコンセンサスを得られたら、購買マネージャは、当該サプライヤを承認または却下できます。

56.2.3 事例2: カスタマ・サポート・センター・アプリケーションでSpaceを使用してカスタマ・エスカレーションを話し合う

Oracle WebCenter Portal: Frameworkを使用して構築された、お客様からの電話および問題を追跡するカスタマ・サポート・センター・アプリケーションを考えてみます。

サポート・アナリストは、そのアナリストが対応しているサービス・リクエストがお客様によってエスカレートされたことを通知されます。アナリストは、社内の様々な部署に所属する他の人々が関与できれば、その問題の解決策を迅速に見つけられることを認識しています。例:

- プロジェクトを実行したチームのプロジェクト・マネージャは、そのプロジェクトに関する詳しい知識を提供できます。

- お客様と定期的に連絡を取っているアカウント・マネージャは、お客様のサイトでのプロジェクトの実行に関する具体的な情報を提供できます。

- 以前、似たようなエスカレーションに対応したことがある別のアナリストは、そのエスカレーションを解決した方法に関する情報を提供できます。

この問題は、スペースを使用して共同で解決できます。サポート・アナリストは、カスタマ・サポート・センター・アプリケーション内からスペースを作成し、必要なメンバーを追加します。それらのメンバーは通知を受け取り、スペースを使用してお客様の状況についてディスカッションを開始します。サポート・アナリストは、彼らのスペースへの更新内容をサポート・アプリケーション内で表示し、より具体的な詳細を知る必要がある場合はスペースに移動します。彼女はスペースの他のメンバーから入手する情報に基づいて、問題を診断し、お客様に非常に迅速に解決策を提示できます。

56.2.4 Spaces APIを使用するようにWebCenter Portalアプリケーションを設定する方法

Spaces APIを使用するには、その前に、Spacesアプリケーションが起動されていて実行中であることと、プロジェクトがJDeveloperで適切に設定されていることを確認する必要があります。

この項には次のサブセクションが含まれます:

- Spacesアプリケーションが起動されて実行中であることの確認

- Spaces APIを使用するためのWebCenter Portalアプリケーションの設定

- アプリケーションとSpaces間の接続のセキュリティ保護

- Spacesクライアント・コンテキストの設定

56.2.4.1 Spacesアプリケーションが起動されて実行中であることの確認

Spaces APIを使用する場合、Spacesアプリケーションが起動されていて実行中であることが必要です。

Spacesが起動されていて実行中であることを確認するには:

1. Spacesを起動します。URLは次のとおりです。

http://host:port/webcenter

ログインする必要はありません。

2. Spaces Webサービスが起動されていて実行中であることを確認します。URLは次のとおりです。

http://host:port/webcenter/SpacesWebService?WSDL

図56-6に示すようなページが表示されます。このページが表示されない場合は、Fusion Middleware管理者にお問い合せください。

図56-6 SpacesWebService WSDL

「図56-6 SpacesWebService WSDL」の説明

Spacesの設定の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のSpacesアプリケーションの起動と実行に関する項の章を参照してください。

56.2.4.2 Spaces APIを使用するためのWebCenter Portalアプリケーションの設定

WebCenter Portal: FrameworkアプリケーションでSpaces APIをコールするには、その前にアプリケーションに適切なライブラリが含まれていることと、Spaces Webサービスへの接続が存在することを確認する必要があります。

Spaces APIを使用するようにアプリケーションを設定するには:

1. JDeveloperを起動します。

2. アプリケーション・ナビゲータで、Spacesの機能を提供する対象となるアプリケーションを開きます。
アプリケーションは、「WebCenterポータル・アプリケーション」テンプレートに基づいている必要があります。

3. ビュー・コントローラ・プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。

4. 「ライブラリとクラスパス」を選択します。

5. プロジェクト内で次のライブラリが使用可能であることを確認し、必要に応じて任意のものを追加します。

- ADF DVT Facesランタイム

- ADFモデル汎用ランタイム

- ADFモデル・ランタイム

- JAX-RPCクライアント

- JAX-WSクライアント

- JAXB

- Oracle JEWT

- Spacesクライアント

- 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エンドポイント」フィールドに、Spaces 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 Spaces 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>

実行時にSpacesWebサービス・エンドポイントを設定する必要がある場合は、setGroupSpaceWebServiceEndpoint APIを使用できます(例56-2)。パラメータとしてエンドポイントを取るラッパーAPIを作成し、setGroupSpaceWebServiceEndpointをコールして、そのパラメータを渡すことができます。エンドポイントがconnections.xmlで設定されていない場合は、例外がINFOとしてログ・ファイルでレポートされます。

例56-2 実行時のSpaces Webサービス・エンドポイントの設定

client.setGroupSpacesWebServiceEndpoint("http://xmlns.oracle.com/webcenter/SpacesWebService");

56.2.4.3 アプリケーションとSpaces間の接続のセキュリティ保護

WebCenter Portal: FrameworkアプリケーションでSpaces APIを使用する前に、アプリケーション(コンシューマ)とSpaces(プロデューサ)との間の通信がセキュリティで保護されていることを確認する必要があります。これは、APIを呼び出したユーザーのアイデンティティがセキュアな方法でSpacesに伝播され、通信の整合性と機密性が保たれるようにするためです。

これを実行するため、Spaces APIはメッセージ保護とともにSAMLベースのトークンのポリシーを使用します。管理者は、Spacesがアプリケーションから受信したセキュリティ・トークンの真正性を確認できるように、Javaキーストアを作成し資格証明ストアを更新する必要があります。その後、JDeveloperを使用して、このキーストアを登録し資格証明ストアを更新する必要があります。

管理者が実行する必要のある手順の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWS-Securityによる、SpacesクライアントAPIを使用するアプリケーションのスペースの保護に関する項を参照してください。

56.2.4.4 Spacesクライアント・コンテキストの設定

アプリケーション・コード内でSpaces APIをコールする前に、いくつかのセットアップ手順が必要です。

Spacesクライアント・コンテキストを設定する手順は次のとおりです

1. WebLogic Server (WLS)にデプロイされたアプリケーションからSpaces APIをコールすると、特に上書きするように選択していないかぎり、ドメイン全体の構成設定が使用されます。セキュリティ構成パラメータを上書きまたは設定するには、GroupSpaceWSContextクラスによって提供されているAPIを使用します。
特に、データの暗号化に必要なSAMLの発行者名およびSpacesの公開鍵の別名を設定する必要があります。Spaces Webサービス・エンドポイントがconnections.xmlファイルに設定されていない場合、これも設定できます。

例:

GroupSpaceWSContext context = new GroupSpaceWSContext();

context.setEndPoint("endPointUrl");
context.setSamlIssuerName("samlIssuer");
context.setRecipientKeyAlias("producer");

groupSpaceWSClient = new GroupSpaceWSClient(context);

ここで:

- endPointUrlはSpaces Webサービス・エンドポイントです(たとえば、http://xmlns.oracle.com:8912/webcenter/SpacesWebService)。

- samlIssuerは、このSAMLアサーティング・パーティのアサーションを発行するSAML認証局の発行者URIです(たとえば、www.oracle.com)。デフォルトのwww.oracle.comが唯一信頼できるSAML発行者です。

- producerは、Spacesの公開鍵の別名です。たとえば、単純なトポロジを使用している場合はorakeyとなります。
管理者が実行する必要のある手順の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWS-Securityによる、SpacesクライアントAPIを使用するアプリケーションのスペースの保護に関する項を参照してください。

GroupSpaceWSContextクラスによって提供されるAPIの完全なリストは、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

2. コンテキストを渡すことでSpacesクライアントを初期化します。例:

GroupSpaceWSClient client = new GroupSpaceWSClient(context);

3. クライアントを初期化したら、次のものをコールすることによってすべてが適切に設定されていることを確認します。

getWebCenterSpacesURL();

適切なURLが返された場合、すべてが適切に設定されており、Spaces APIの使用を開始できます。

56.2.5 WebCenter PortalアプリケーションでSpacesの機能を提供する方法

Spaces APIによって、WebCenter Portal: Frameworkアプリケーション内で一般的なスペース関連の操作を実行できます。これらのAPIの大部分は、GroupSpaceWSClientクラスによって提供されます。これらのAPIは、3つのメイン・カテゴリに分類できます。

- スペースおよびスペース・テンプレートの管理

- スペース・メンバーシップの管理

- スペースおよびスペース・テンプレートの情報の取得

表56-2は、GroupSpaceWSClientクラスのAPIを示しています。

表56-2 一般的なスペースの操作を実行するためのAPI

Spaces API

カテゴリ

説明

createGroupSpace

スペースおよびスペース・テンプレートの管理

テンプレートに基づいて新しいスペースを作成します。第56.2.5.1.1項「スペースの作成」を参照してください。

setCustomAttribute

スペースおよびスペース・テンプレートの管理

スペースのカスタム属性を1つ以上作成します。第56.2.5.1.2項「カスタム属性の作成」を参照してください。

deleteGroupSpace

スペースおよびスペース・テンプレートの管理

Spacesからスペースを完全に削除します。第56.2.5.1.4項「スペースの削除」を参照してください。

createGroupSpaceTemplate

スペースおよびスペース・テンプレートの管理

既存のスペースに基づいて新しいスペース・テンプレートを作成します。第56.2.5.1.3項「スペース・テンプレートの作成」を参照してください。

addMember

スペース・メンバーシップの管理

ユーザー(またはグループ)を特定のロールを持つスペース・メンバーにします。第56.2.5.2.1項「スペースへのメンバーの追加」を参照してください。

inviteMember

スペース・メンバーシップの管理

リストのユーザーを、スペースのメンバーになるように招待します。第56.2.5.2.2項「ユーザーをスペースに参加するように招待」を参照してください。

removeMember

スペース・メンバーシップの管理

スペース・メンバーシップを取り消します。第56.2.5.2.3項「スペースからのメンバーの削除」を参照してください。

getRoles

スペース・メンバーシップの管理

特定のスペースのすべてのロールを取得します。第56.2.5.2.4項「ロール情報の取得」を参照してください。

getGroupSpaces

スペースおよびスペース・テンプレートの情報の取得

指定した問合せ文字列に対してスペースのリストを取得します。第56.2.5.3.1項「スペースのリストの取得」を参照してください。

getPublicGroupSpaces

スペースおよびスペース・テンプレートの情報の取得

指定した問合せ文字列に対してパブリック・スペースのリストを取得します。第56.2.5.3.2項「パブリック・スペースのリストの取得」を参照してください。

getDiscoverableGroupSpaces

スペースおよびスペース・テンプレートの情報の取得

指定した問合せ文字列に対して検出可能スペースのリストを取得します。第56.2.5.3.3項「検出可能スペースのリストの取得」を参照してください。

getGroupSpaceMetadata

スペースおよびスペース・テンプレートの情報の取得

スペースに関する情報(メタデータ)を取得します。第56.2.5.3.4項「スペース・メタデータの取得」を参照してください。

getGroupSpaceMetadataByGuid

スペースおよびスペース・テンプレートの情報の取得

スペースのGUIDを指定してスペースに関する情報(メタデータ)を取得します。第56.2.5.3.4項「スペース・メタデータの取得」を参照してください。

getGroupSpaceTemplates

スペースおよびスペース・テンプレートの情報の取得

指定した問合せ文字列に対してスペース・テンプレートのリストを取得します。第56.2.5.3.5項「スペース・テンプレートのリストの取得」を参照してください。

getGroupSpaceTemplateMetadata

スペースおよびスペース・テンプレートの情報の取得

スペース・テンプレートに関する情報(メタデータ)を取得します。第56.2.5.3.6項「スペース・テンプレート・メタデータの取得」を参照してください。

getGroupSpaceTemplateMetadataByGuid

スペースおよびスペース・テンプレートの情報の取得

テンプレートのGUIDを指定してスペース・テンプレートに関する情報(メタデータ)を取得します。第56.2.5.3.6項「スペース・テンプレート・メタデータの取得」を参照してください。

getWebCenterSpacesURL

スペースおよびスペース・テンプレートの情報の取得

SpacesアプリケーションのURLを取得します。第56.2.5.3.7項「SpacesのURLの取得」を参照してください。

getGroupSpaceURL

スペースおよびスペース・テンプレートの情報の取得

スペースのURLを取得します。第56.2.5.3.8項「スペースのURLの取得」を参照してください。

getServiceRSSFeedURL

スペースおよびスペース・テンプレートの情報の取得

指定したスペース・サービスのRSSフィードURLを取得します。

getServiceRSSFeedURLbyGuid

スペースおよびスペース・テンプレートの情報の取得

GUIDによって指定したスペースおよび指定したサービスのRSSフィードURLを取得します。

56.2.5.1 スペースおよびスペース・テンプレートの管理

次のSpaces APIを使用して、スペースおよびスペース・テンプレートを管理します。

- createGroupSpace

- setCustomAttribute

- createGroupSpaceTemplate

- deleteGroupSpace

始める前に

これらのAPIを使用するには、その前に第56.2.4項「Spaces APIを使用するようにWebCenter Portalアプリケーションを設定する方法」に記載されているすべての手順を完了する必要があります。

この項の内容は、次のとおりです

- スペースの作成

- カスタム属性の作成

- スペース・テンプレートの作成

- スペースの削除

56.2.5.1.1 スペースの作成

createGroupSpace APIを使用して、既存のスペース・テンプレートに基づいたスペースを作成します。

このAPIを使用するには、次を指定します:

- 新しいスペースの内部名。この名前には、空白を含めることができます。

- 新しいスペースの表示名。

- スペースの説明。これは必須ではありませんが、ユーザーがこのスペースの目的を識別できるように説明を入力することをお薦めします。

- 使用するスペース・テンプレートの名前。これは、テンプレートの表示名ではなく内部名にする必要があります。

オプションで、ユーザーが検索でスペースを見つけられるようにキーワードのカンマ区切りリストを入力できます。

例56-3では、CommunityofInterestテンプレートに基づいたDatabasesという名前のスペースを作成します。この例では、2つの検索キーワード(databasesおよびOracle)も指定します

例56-3 スペースの作成

//create the space
GroupSpaceWSMetadata gsMetadata =
client.createGroupSpace("Databases", "Databases" "A community for people interested in databases", "databases, oracle", "CommunityofInterest");
//print the space GUID to provide confirmation of creation
System.out.println("GUID: " + gsMetadata.getGuid());

新しいスペースに対してカスタム属性を指定する方法の例は、第56.2.5.1.2項「カスタム属性の作成」を参照してください。

56.2.5.1.2 カスタム属性の作成

すべてのスペースには、名前、説明、作成日、アイコンなどの組込み属性が備わっています。さらに、スペースに固有の追加情報(メタデータ)およびその特性を格納するカスタム属性を定義できます。

setCustomAttribute APIを使用して、スペースのカスタム属性を指定します。このAPIを使用するには、スペースの名前と、カスタム属性の名前、説明、タイプおよび値を指定します。

例56-4では、Databasesスペースを作成し、そのスペースのカスタム属性を作成します。属性はVendorsという名前で、List of vendorsという説明が付いています。その属性は、OracleやIBMという文字列値を取ります。

例56-4 カスタム属性の作成

//create the space
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.2.5.1.3 スペース・テンプレートの作成

createGroupSpaceTemplate APIを使用して、既存のスペースに基づいてスペース・テンプレートを作成します。このAPIを使用するには、テンプレートの名前、表示名および説明と、テンプレートを作成するために使用するスペースの名前を指定します。

例56-5では、Databasesスペースに基づきスペース・テンプレートを作成します。

例56-5 スペース・テンプレートの作成

GroupSpaceWSMetadata templMetadata =
client.createGroupSpaceTemplate("DatabasesTemplate", "Databases Template",
"A template based on the Databases space", "Databases");
//print the template GUID to provide confirmation of creation
System.out.println("GUID: " + templMetadata.getGuid());

56.2.5.1.4 スペースの削除

deleteGroupSpace APIを使用して、Spacesアプリケーションからスペースを完全に削除します。このAPIを使用するには、削除するスペースの名前を指定します。このAPIは、削除が正常に実行されたかどうかを示すブール値を返します。

例56-6では、Databasesという名前のスペースを削除します。この例では、APIによって返されるブール値を使用して、操作の成功または失敗に関するメッセージを出力します。

例56-6 スペースの削除

//delete the space
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.2.5.2 スペース・メンバーシップの管理

次のSpaces APIを使用して、スペース・メンバーシップを管理します。

- addMember

- inviteMember

- removeMember

- getRoles

始める前に

これらのAPIを使用するには、その前に第56.2.4項「Spaces APIを使用するようにWebCenter Portalアプリケーションを設定する方法」に記載されているすべての手順を完了する必要があります。

この項には次のサブセクションが含まれます:

- スペースへのメンバーの追加

- ユーザーをスペースに参加するように招待

- スペースからのメンバーの削除

- ロール情報の取得

56.2.5.2.1 スペースへのメンバーの追加

addMember APIを使用して、ユーザー(およびグループ)にスペース・メンバーシップを与え、新しいメンバーを特定のロールに割り当てます。このAPIを使用するには、スペースの名前およびユーザーまたはグループのリストを指定します。リストには、ユーザーまたはグループの名前およびスペース内でそのユーザーまたはグループに付与するロールを指定するタイプGroupSpaceWSMembersのオブジェクトが含まれている必要があります。

Spacesアイデンティティ・ストアに存在する有効なユーザーまたはユーザー・グループの名前を指定する必要があります。ロールの場合は、デフォルト・ロール(モデレータ、参加者、ビューア)のいずれか、またはカスタム・ロール(ある場合)を選択します。スペースで使用可能なロールのリストを取得するには、getRoles APIを使用します。詳細は、第56.2.5.2.4項「ロール情報の取得」を参照してください。ロールの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のスペースのロールと権限の管理に関する項を参照してください。

例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 Space
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.2.5.2.2 ユーザーをスペースに参加するように招待

inviteMember APIを使用して、スペースのメンバーになるようにユーザーを招待します。このAPIを使用するには、スペースの名前および招待するユーザーのリストを指定します。リストには、ユーザーの名前およびスペース内でそのユーザーに付与するロールを指定するタイプGroupSpaceWSMembersのオブジェクトが含まれている必要があります。スペースへの参加の招待は、各ユーザーに送信され、各ユーザーはその招待を受け入れるか拒否できます。

Spacesアイデンティティ・ストアに存在する有効なユーザーの名前を指定する必要があります。ロールの場合は、デフォルト・ロール(モデレータ、参加者、ビューア)のいずれか、またはカスタム・ロール(ある場合)を選択します。スペースで使用可能なロールのリストを取得するには、getRoles APIを使用します。詳細は、第56.2.5.2.4項「ロール情報の取得」を参照してください。ロールの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のスペースのロールと権限の管理に関する項を参照してください。

例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 space
client.inviteMember("Databases", inviteMem);

56.2.5.2.3 スペースからのメンバーの削除

removeMember APIを使用して、スペース・メンバーシップを取り消します。このAPIを使用するには、スペースの名前およびユーザーのリストを指定します。リストには、ユーザー名を指定するタイプGroupSpaceWSMembersのオブジェクトが含まれている必要があります。現在のスペース・メンバーのリストを取得するには、getGroupSpaceMetadata APIを使用します。詳細は、第56.2.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 space
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.2.5.2.4 ロール情報の取得

getRoles APIを使用して、指定されたスペースのすべてのロールを取得します。これは、メンバーをスペースに追加または招待するときにどのロールを使用可能であるのかの判断に役立ちます。ロールには、そのままで使用できるロール(モデレータ、参加者、ビューア)およびカスタム・ロール(必要な場合)があります。このAPIを使用するには、スペースの名前を指定します。

例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.2.5.3 スペースおよびスペース・テンプレートの情報の取得

次のSpaces APIを使用して、スペース情報を取得します。

- getGroupSpaces

- getPublicGroupSpaces

- getDiscoverableGroupSpaces

- getGroupSpaceMetadata

- getGroupSpaceMetadataByGuid

- getGroupSpaceTemplates

- getGroupSpaceTemplateMetadata

- getGroupSpaceTemplateMetadataByGuid

- getWebCenterSpacesURL

- getGroupSpaceURL

始める前に

これらのAPIを使用するには、その前に第56.2.4項「Spaces APIを使用するようにWebCenter Portalアプリケーションを設定する方法」に記載されているすべての手順を完了する必要があります。

この項の内容は、次のとおりです

- スペースのリストの取得

- パブリック・スペースのリストの取得

- 検出可能スペースのリストの取得

- スペース・メタデータの取得

- スペース・テンプレートのリストの取得

- スペース・テンプレート・メタデータの取得

- SpacesのURLの取得

- スペースのURLの取得

- スペース・サービスのためのRSSフィードURLの取得

56.2.5.3.1 スペースのリストの取得

getGroupSpaces APIを使用して、指定した問合せ文字列に一致するスペースのリストを取得します。このAPIを使用するには、問合せ文字列を指定します。NULL値の問合せ文字列では、現在のユーザーがアクセス可能なすべてのスペースのリストが返されます。

このAPIでは、現在のユーザーがアクセス可能なスペースが最大500個返されます。

例56-11では、文字列Databaseを含むスペースのリストが返されます。

例56-11 特定のスペースのリストの取得

List<String> allGroupSpaces = client.getGroupSpaces("Database");

例56-12では、現在のユーザーがアクセス権を持つすべてのスペースのリストが返されます。それには、nullの問合せ文字列を指定します。

例56-12 すべてのスペースのリストの取得

List<String> allGroupSpaces = client.getGroupSpaces(null)

56.2.5.3.2 パブリック・スペースのリストの取得

getPublicGroupSpaces APIを使用して、指定した問合せ文字列に一致するパブリック・スペースのリストを取得します。このAPIを使用するには、問合せ文字列を指定します。NULL値の問合せ文字列では、すべてのパブリック・スペースのリストが返されます。

このAPIでは、Spacesアプリケーションにログインしていないユーザーも含めてすべてのユーザーがアクセス可能なスペースを、最大500個返します。

例56-13では、文字列Databaseを含むパブリック・スペースのリストが返されます。

例56-13 特定のパブリック・スペースのリストの取得

List<String> allPublicGroupSpaces = client.getPublicGroupSpaces("Database");

例56-14では、すべてのパブリック・スペースのリストが返されます。それには、nullの問合せ文字列を指定します。

例56-14 すべてのパブリック・スペースのリストの取得

List<String> allPublicGroupSpaces = client.getPublicGroupSpaces(null)

56.2.5.3.3 検出可能スペースのリストの取得

getDiscoverableGroupSpaces APIを使用して、指定した問合せ文字列に一致する検出可能スペースのリストを取得します。このAPIを使用するには、問合せ文字列を指定します。NULL値の問合せ文字列では、すべての検出可能スペースのリストが返されます。

このAPIでは、Spacesアプリケーションにログインしているすべてのユーザーがアクセス可能なスペースを、最大500個返します。

例56-13では、文字列Databaseを含む検出可能スペースのリストが返されます。

例56-15 検出可能スペースのリストの取得

List<String> allDiscoverableGroupspaces = client.getDiscoverableGroupspaces("Database");

例56-14では、すべての検出可能スペースのリストが返されます。それには、nullの問合せ文字列を指定します。

例56-16 すべての検出可能スペースのリストの取得

List<String> allDiscoverableGroupSpaces = client.getDiscoverableGroupSpaces(null)

56.2.5.3.4 スペース・メタデータの取得

getGroupSpaceMetadataまたはgetGroupSpaceMetadataByGuid APIを使用して、特定のスペースに関する情報(メタデータ)を取得します。これには、スペースの説明、それを作成したユーザーの名前、それが最後に更新された日付などの情報が含まれます。

getGroupSpaceMetadata APIを使用するには、スペースの名前を指定します。getGroupSpaceMetadataByGuid APIを使用するには、スペースのGUIDを指定します。スペース名はそのスペースが存在している間に変更できますが、GUIDは常に同じです。スペースのGUIDは、次のようにして取得できます。

getGroupSpaceMetadata("spaceName").getGuid();

どちらのAPIでも、スペース・メタデータの取得に使用できる、より多くのAPIが含まれたBeanオブジェクトが返されます。これらのAPIは、GroupSpaceWSMetadataクラスによって提供されます。表56-3は、このBeanオブジェクトによって返されるAPIを示しています。

表56-3 スペース・メタデータを取得するためのAPI

Spaces API

説明

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 space
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 space description
System.out.println("Description: " + metadata.getDescription());
//get space keywords
System.out.println("Keywords: " + metadata.getKeywords());
//get the date the space 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 space display name
System.out.println("Display Name: " + metadata.getDisplayName());
//get the name of the user who created the space
System.out.println("Created By: " + metadata.getCreatedBy());
//get the date the space was last updated
System.out.println("Last Updated Date: " + metadata.getLastUpdated().toString());

例56-19では、Databasesスペースと関連付けられたすべてのカスタム属性の名前、説明、タイプおよび値を取得します。

例56-19 カスタム属性メタデータの取得

//get the exact name of the space
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 space
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.2.5.3.5 スペース・テンプレートのリストの取得

getGroupSpaceTemplates APIを使用して、指定した問合せ文字列に一致するスペース・テンプレートのリストを取得します。このAPIを使用するには、問合せ文字列を指定します。NULL値の問合せ文字列では、現在のユーザーがアクセス可能なすべてのテンプレートのリストが返されます。

このAPIでは、現在のユーザーがアクセス可能なテンプレートが最大500個返されます。

例56-21では、文字列Interestを含むスペース・テンプレートのリストが返されます。

例56-21 特定のスペース・テンプレートのリストの取得

List<String> allGroupSpaceTemplates = client.getGroupSpaceTemplates("Interest");

例56-22では、現在のユーザーがアクセス権を持つすべてのスペース・テンプレートのリストが返されます。それには、nullの問合せ文字列を指定します。

例56-22 すべてのスペース・テンプレートのリストの取得

List<String> allGroupSpaceTemplates = client.getGroupSpaceTemplates(null);

56.2.5.3.6 スペース・テンプレート・メタデータの取得

getGroupSpaceTemplateMetadataまたはgetGroupSpaceTemplateMetadataByGuid APIを使用して、特定のスペース・テンプレートに関する情報(メタデータ)を取得します。これには、テンプレートの説明、それを作成したユーザーの名前などの情報が含まれます。

getGroupSpaceTemplateMetadata APIを使用するには、テンプレートの名前を指定します。getGroupSpaceTemplateMetadataByGuid APIを使用するには、テンプレートのGUIDを指定します。スペース・テンプレート名はそのテンプレートが存在している間に変更できますが、GUIDは常に同じです。

どちらのAPIでも、スペース・テンプレート・メタデータの取得に使用できる、より多くのAPIが含まれたBeanオブジェクトが返されます。これらのAPIは、GroupSpaceWSMetadataクラスによって提供されます。表56-4は、このBeanオブジェクトによって返されるAPIを示しています。

表56-4 スペース・テンプレート・メタデータを取得するためのAPI

Spaces API

説明

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 space 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.2.5.3.7 SpacesのURLの取得

getWebCenterSpacesURL APIを使用して、SpacesアプリケーションのURLを取得します。

例56-25では、Spacesの現在実行中のインスタンスのURLを取得します。

例56-25 WebCenter Portal: Spaces URLの取得

String myWebCenterSpacesURL = client.getWebCenterSpacesURL();

56.2.5.3.8 スペースのURLの取得

getGroupSpaceURL APIを使用して、特定のスペースのURLを取得します。これは、スペースのハイパーリンクを作成する場合、または絶対URLにすることが必要な相対URLがある場合に便利です。このAPIを使用するには、スペースの名前を指定します。

例56-26では、DatabasesスペースのURLを取得します。

例56-26 スペースのURLの取得

String myGroupSpaceURL = client.getGroupSpaceURL("Databases");

例56-27では、スペースのリストをハイパーリンクとして出力します。

例56-27 ハイパーリンクとしてのスペースのリストの出力

//get the list of spaces
List<String> spaces = client.getGroupSpaces("");
//print the list of spaces as hyperlinks
for (String spaceName : spaces)
{
print("<a href =""" + client.getGroupSpaceURL(spaceName) + "">" + spaceName + "</a><br>");
}

スペース内に特定のページのURLを作成するには、スペースURLを取得し、ページ情報を追加します。スペース・ページのプリティURLを作成する方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のスペースのプリティURLに関する項を参照してください。

56.2.5.3.9 スペース・サービスのためのRSSフィードURLの取得

スペース・メンバーは、様々なRSSニュース・フィードを介してスペース内で起きていることを把握できます。次のスペースRSSフィードを使用できます。

- お知らせのRSS - スペースのお知らせの表示

- ディスカッションのRSS - ディスカッション・フォーラムへの投稿の追跡

- リストのRSS - リストに対する改訂の監視

- 最近のアクティビティのRSS - 最近のアクティビティの監視

これらのスペース・サービスのRSSフィードURLは、WebCenter Portalアプリケーションから、次のSpaces 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 APIを使用し、スペース名を指定することによって特定のスペースのサービス関連の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 APIを使用し、スペースのGUIDを指定することによって特定のスペースのサービス関連のRSSニュース・フィードURLを取得します。

getServiceRSSFeedURLbyGuidを使用してサービスのRSSニュース・フィードURLを取得するには、次を使用します:

String service_URL = client.getServiceRSSFeedURLbyGuid("groupspace_GUID",service_ID);

ここで:

service_URLは、取得されるサービス・パラメータです

groupspace_GUIDはスペースGUIDです。スペースのGUIDの取得の詳細は、第56.2.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.2.6 Spaces APIから発生した例外を処理する方法

GroupSpaceWSExceptionクラスは、Spaces APIから発生した例外を処理するためのAPIを提供します。

表56-5 GroupSpaceWSExceptionクラスのSpaces API

API

クラス

説明

getLocalizedMessage

GroupSpaceWSException

ローカライズされたエラー・メッセージを作成します。

printStackTrace

GroupSpaceWSException

標準エラー・ストリームに例外およびそのバックトレースを出力します。

この項には次のサブセクションが含まれます:

- ローカライズされたエラー・メッセージの提供

- エラー・スタックのリスト

56.2.6.1 ローカライズされたエラー・メッセージの提供

場合によっては、APIによって提供されるデフォルトのエラー・メッセージが、自身の特定のアプリケーションに対しては具体性に欠けると思われることがあります。このような場合、独自のエラー・メッセージを提供できます。

getLocalizedMessage APIを使用して、アプリケーション固有のエラー・メッセージを作成できます。

例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 space");
}
catch(GroupSpaceWSException ex)
{
if(ex instanceof GroupSpaceNameNullException)
print(ex.getLocalizedMessage());
else if (ex instanceof GroupSpaceDescNullException)
print(ex.getLocalizedMessage());
}
...
}

56.2.6.2 エラー・スタックのリスト

これは、デバッグ目的で、最終的にどのエラーが特定の操作の失敗につながるのかを調べて問題の根底にある原因を発見するために役立ちます。printStackTrace APIを使用して、特定の例外を発生させたエラーをすべてリストします。

例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 space");
}
catch(GroupSpaceWSException ex)
{
ex.printStackTrace();
}
...
}

56.2.7 Spaces APIの詳細情報を見つける方法

APIリファレンス・ドキュメント

各APIの詳細な構文情報はOracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

56.2.8 Spaces APIでのトラブルシューティングの問題

Spaces APIで問題が発生する場合は、次のことを確認してください。

1. WebCenter Portal: SpacesとクライアントWebCenter Portalアプリケーションの両方の資格証明ストアが適切に構成されていることを確認してください。
『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の資格証明ストアの更新に関する項を参照してください。

2. context.setRecipientKeyAliasに渡される別名をチェックして、Spacesのクライアント・コンテキストがWebCenter Portalアプリケーションで正しく設定されていることを確認します。この別名は、次のようにプロデューサ(Spaces)の公開鍵の別名である必要があります。

GroupspaceWSContext context = new GroupspaceWSContext();context.setEndPoint(endPointUrl);context.setRecipientKeyAlias("orakey");
groupspaceInternalWSClient = new GroupspaceWSInternalClient(context);

この例では、プロデューサの公開鍵の別名はorakeyです。「Spacesクライアント・コンテキストの設定」も参照してください。

3. 接続の両端にキーストアが存在していることを確認してください。例:
- webcenter.jks (Spacesの側にコピーされている)

- clientapi.jks (WebCenter Portalアプリケーションの側にコピーされている)

たとえば、単純なトポロジの場合、次のコマンドでは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

「アプリケーションとSpaces間の接続のセキュリティ保護」も参照してください。

56.3 WebCenter Portal: Spaces REST APIの使用方法

Oracle WebCenter Portal: Spacesは、様々なスペース関連操作をサポートするREST APIを提供します。REST APIを使用して、Spacesアプリケーション内で次のアクションを実行できます。

- Spacesアプリケーション内のすべてのスペースをリスト、パブリック・スペースのみをリスト、参加しているスペースをリスト、検出可能スペースをリストします。

- 1つのスペースの詳細を表示します。

- スペースのメンバーをリストします。

- スペース・メンバーに対するロールの割当てをリストします。

- 1つのスペースに対して定義されているカスタム属性をリストします。

- 特定のカスタム属性の詳細を表示します。

- 1つのスペースのリストを表示および追加します。

- 1つのリストのリスト・アイテム(行)を表示および更新します。

- リスト・アイテム詳細(列)を表示、更新および削除します。

この項では、WebCenter Portal: Spaces REST APIについて説明します。次のサブセクションが含まれます:

- 第56.3.1項「WebCenter Portal: Spacesのエントリ・ポイント」

- 第56.3.2項「WebCenter Portal: Spacesのリソース・タイプの分類」

- 第56.3.3項「WebCenter Portal: Spacesのセキュリティに関する考慮事項」

- 第56.3.4項「WebCenter Portal: Spacesのリソース・タイプ」

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

56.3.1 WebCenter Portal: Spacesのエントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。WebCenter Portal: Spaces REST APIのエントリ・ポイントを見つけるには、次のresourceTypeを持つリンク要素を見つけます。

urn:oracle:webcenter:spaces

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供され、それによって現在のユーザーがアクセスできるスペースのリストが返されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、WebCenter Portal: Spacesを操作します。

リソース索引の詳細は、第53.5.1項「リソース索引」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

56.3.2 WebCenter Portal: Spacesのリソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第56.3.4項「WebCenter Portal: Spacesのリソース・タイプ」の該当の項を参照してください。

WebCenter Portal: Spacesの分類は、次のとおりです。

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.3.3 WebCenter Portal: Spacesのセキュリティに関する考慮事項

このサービスでは、セキュリティに関する特定の考慮事項はありません。一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

56.3.4 WebCenter Portal: Spacesのリソース・タイプ

次の項では、各リソース・タイプについて知っておく必要がある情報をすべて提供します。

- urn:oracle:webcenter:spaces

- urn:oracle:webcenter:siteresources

- urn:oracle:webcenter:spaces:resource:templates

- urn:oracle:webcenter:space

- urn:oracle:webcenter:space:resourceindex

- urn:oracle:webcenter:space:roles

- urn:oracle:webcenter:space:attributes

- urn:oracle:webcenter:space:attribute

- urn:oracle:webcenter:space:members

- urn:oracle:webcenter:space:member

- 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

56.3.4.1 urn:oracle:webcenter:spaces

スペースのリストの表示(GET)および新しいスペースの作成(POST)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、各スペースが含まれており、各スペースには、そのスペースに対して操作するためのリンクが含まれています。

spacesへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

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.3.4.2 urn:oracle:webcenter:siteresources

サイト・リソースのリストの取得(GET)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、すべてのサイト・リソース名のリストが含まれています。サイト・リソース名を取得する主な目的は、そのスペース内で使用可能なすべてのリソースを把握するためです。

返されるリストには、Spacesアプリケーションの管理コンソールの「リソース」タブの下にあるリソースが含まれ、ページ・テンプレート、ナビゲーション、スキン、ページ・スタイルなどのリソースが含まれます。

siteresourcesへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
spaces
siteresources

siteresourcesでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

- GET

- リクエスト - 本体: なし

- 問合せパラメータ:

- startIndex

- itemsPerPage

- 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 Spaces FXスキンを使用します。

Spaces FX

スキン

WebCenter Spaces FXスキン

トップ・ナビゲーション付きのポータル中心

siteTemplate

フロー・レイアウトおよびトップ・ナビゲーション付きの、ポータル中心サイト用ページ・テンプレート。WebCenter Spaces FXスキンを使用します。

サイド・ナビゲーション

siteTemplate

サイド・ナビゲーション付きフロー・ページ・レイアウト。WebCenter Spaces FXスキンを使用します。

サイド・ナビゲーション(ストレッチ)

siteTemplate

サイド・ナビゲーション付きストレッチ・ページ・レイアウト。WebCenter Spaces FXスキンを使用します。

トップ・ナビゲーション

siteTemplate

フロー・レイアウトとトップ・ナビゲーション付きデフォルト・ページ・テンプレート。WebCenter Spaces FXスキンを使用します。

トップ・ナビゲーション(ストレッチ)

siteTemplate

トップ・ナビゲーション付きストレッチ・ページ・レイアウト。WebCenter Spaces FXスキンを使用します。

Wiki

pageStyle

Wikiページ・スタイル

siteresourcesの書込み可能要素

このリソースに書込み可能要素はありません。

56.3.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.3.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ステータス・コードが返されます。

問合せパラメータの詳細は、第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.3.4.5 urn:oracle:webcenter:space:resourceindex

Spacesリソース索引の表示に使用する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.3.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.3.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.3.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.3.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.3.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.3.4.11 urn:oracle:webcenter:space:members

スペースのメンバーのリストの表示(GET)に使用するURIを識別するには、このリソース・タイプを使用します。GET操作からのレスポンスには、スペースの各メンバーが含まれており、各メンバーには、そのメンバーに対して操作するためのリンクが含まれています。

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.3.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.3.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.3.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.3.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.3.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.3.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.3.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.4 Spacesにおけるエンタープライズ・アプリケーションの公開

Spacesアプリケーション内で、次のものなど様々なエンタープライズ・アプリケーションを公開できます。

- WebCenter Portalアプリケーション: 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サポートなどのテクノロジによって、Spacesアプリケーションは、統合された方式でアプリケーション・データを使用および定義できます。次の項で、その方法を説明します。

この項には次のサブセクションが含まれます:

- SpacesでのWebCenter Portalアプリケーションの公開

- SpacesでのOracleアプリケーションの公開

- Spacesでの非Oracleアプリケーションの公開

56.4.1 SpacesでのWebCenter Portalアプリケーションの公開

WebCenter Portal: Frameworkを使用して構築したWebCenter Portal: Frameworkアプリケーションを、Spacesアプリケーションでポートレットおよびタスク・フローとして公開できます。

- ポートレット: コンテナ内にデプロイされ動的コンテンツを生成する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.4.2 SpacesでのOracleアプリケーションの公開

Oracle Applications Unlimited製品(E-Business Suite、Siebel、PeopleSoft、JDEdwardsなど)を、次のものを使用してSpacesアプリケーションで公開できます。

- WebサービスおよびADF: Siebelなどのエンタープライズ・アプリケーションでは、様々なWebサービス・インタフェースが公開されています。これらのWebサービス・インタフェースを活用して、データ・コントロール、ADFタスク・フロー、およびSpacesで使用できるポートレットを構築できます。

- 構築済ポートレット: Oracle E-Business Suiteなどのエンタープライズ・アプリケーションには、そのままでSpacesに登録して、他のポートレットと同様に使用できるポートレットが付属しています。

56.4.3 Spacesでの非Oracleアプリケーションの公開

次のようにして、Oracle以外のプラットフォームを使用して開発されたWebアプリケーションをSpacesアプリケーションで公開できます。

- 外部アプリケーションのサポート: 外部アプリケーションによって、資格証明ストアから、マップされたユーザー・アイデンティティを独自の認証が必要なWebアプリケーションに渡すことができます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の外部アプリケーションの登録に関する項と、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の外部アプリケーションの登録に関する項を参照してください。

- コンポーザのiframeレベルの統合: コンポーザのWebページ・ページ・スタイルおよびコンポーネントでは、異なるWebテクノロジを使用して構築されたアプリケーションのページなど任意のWebページ・コンテンツを表示できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページへの別のWebページのビューの追加に関する項を参照してください。

- コンポーザでのRaw HTMLマークアップの注入: コンポーザのHTMLマークアップ・レイアウト・コンポーネントによって、HTMLまたはJavaScriptスニペットがSpacesのページに注入されます。このコンポーネントを使用して、外部ソースからのコンテンツを表示できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページへのHTML、JavaScript、ELなどのマークアップの追加に関する項を参照してください。

- OmniPortlet: 様々なレイアウトを使用して様々なデータ・ソースからのデータを公開するポートレット。詳細は、第63章「OmniPortletを使用したポートレットの作成」を参照してください。

第X部

ポートレットとページレットの作業

第X部の内容は次のとおりです。

- 第57章「ポートレットの概要」

- 第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」

- 第59章「 JSR 286を使用した標準ベースのJavaポートレットの構築」

- 第60章「Oracle PDK-Javaを使用したJavaポートレットの構築」

- 第61章「ポートレット・プロデューサのデプロイ」

- 第62章「ポートレットの使用」

- 第63章「OmniPortletを使用したポートレットの作成」

- 第64章「Webクリッピングを使用したコンテンツ・ベースのポートレットの作成」

- 第65章「Oracle WebCenter Portalのページレット・プロデューサを使用したページレットの作成」

57 ポートレットの概要

この章では、ポートレットの概要を示しポートレットの使用方法を説明します。また、ポートレットの構造およびポートレットを作成するために使用できるリソースについて説明します。また、この章では、どのポートレット構築テクノロジが最もニーズを満たすかを簡単に判断できるように、機能、テクノロジおよびツールについても説明します。

この章には次の項が含まれます:

- 第57.1項「ポートレットの概要」

- 第57.2項「ポートレットの構造」

- 第57.3項「ポートレット・リソース」

- 第57.4項「ポートレット開発」

57.1 ポートレットの概要

ポートレットは再利用可能なWebコンポーネントで、多数の異なるソースからコンテンツを描画できます。ポートレットには静的HTMLコンテンツから、複雑なWebサービスや処理負荷の高いアプリケーションのためのJavaのコントロールまで、あらゆるものを含めることができます。

ポートレットは、複数のソースからのデータを意味のある関連した方法で提示する手段を提供します。ポートレットでは、他のWebサイトからの抜粋の表示、主要情報のサマリーの生成、検索の実行および多様なデータ・ソースの情報を収集したコレクションへのアクセスなどを実行できます。様々なポートレットを単一のページに配置できるため、ユーザーはコンテンツが実際には複数のソースからのものであっても単一のソースとして利用できます。

ポートレットはイベントやその他の手法を使用して相互に通信することもできます。また、単一のポートレットが複数のインスタンスを持つこともできます。つまり、単一のポータル内の、さらには複数のポータルにまたがる様々なページ上に表示できます。ページ設計者はそれぞれの関係者のニーズに合せてポートレットをカスタマイズできます。正しい権限を持つエンド・ユーザーはさらに独自の要件に合せてポートレットをパーソナライズできます。

Oracle WebCenter Portalは、業界標準であるJSR 286を使用してポートレットの開発をサポートします。また、Oracle JSF Portlet Bridgeを使用して既存のJSFアプリケーションからポートレットを作成することもできます。詳細は、第57.3項「ポートレット・リソース」を参照してください。

57.2 ポートレットの構造

ポートレットの構造とは、ページ上でのポートレットの視覚的な表現です。図57-1は、WebCenter Portal: Frameworkアプリケーションの標準的なポートレットに表示されるポートレットの構造の側面を示しています。同じポートレットでも別のアプリケーションに表示された場合は違って見えることがあるので注意してください。

図57-1 代表的なポートレットの構造を示すサンプル・ポートレット

「図57-1 代表的なポートレット構造を示すサンプル・ポートレット」の説明

代表的なポートレットの構造の主な側面(図57-1に示されているのはその一部です)は次のとおりです。

- ポートレット・クロム - ヘッダー、シャドウ、サイズ変更、「アクション」メニュー、アイコンを含む、ポートレットを囲む様々な種類の飾りの総称。

- ポートレット・ヘッダー - ポートレット・アイコン、タイトル、「アクション」メニュー、「カスタマイズ」アイコン、および「パーソナライズ」アイコンを表示するポートレットの領域。

- ポートレット・アイコン - ポートレットを視覚的に特定するためのポートレット・ヘッダー内の小さいイメージ。

- ポートレット・タイトル - ポートレットの目的を示すポートレット・ヘッダー内のテキスト。エンド・ユーザーは実行時にこのタイトルをパーソナライズして特定の用途に合った、わかりやすいタイトルにすることができます。

- パーソナライズ・アイコン - エンド・ユーザーがポートレットを変更して自分だけに見えるようにできるポートレット・ヘッダー内のアイコン。
「パーソナライズ」アイコンは、認証を受けたユーザー(つまりログインしているユーザー)にのみ表示されます。パブリック・ユーザーまたは認証を持たないユーザーには表示されません。ユーザーがポートレットの表示をパーソナライズできるようにするには、なんらかのアプリケーション・セキュリティを実装する必要があります。

- カスタマイズ・アイコン - アプリケーション管理者が実行時にポートレットのデフォルト設定を変更できるようにするポートレット・ヘッダー内のアイコン。これらの内容はすべてのユーザーに表示されます。
典型的なカスタマイズ設定はポートレット・タイトルです。アプリケーション管理者は実行時にポートレット・ヘッダーに表示されるタイトルを決定できます。

- 処理アイコン - クリックすると「アクション」メニューを表示する、ポートレット・ヘッダー内のアイコン。

- 処理メニュー - ユーザーがポートレット上で実行できる様々な処理を一覧するメニュー。ポートレットがユーザー・レベルでキャッシュされると、ポートレットへのアクセス権限が実行され、ユーザーはポートレットをパーソナライズできます。アクションには、「移動」、「削除」、「リフレッシュ」、「上へ移動」、「下へ移動」などがあります。「処理」メニューからは、「バージョン情報」、「ヘルプ」、「構成」、「印刷」などのポートレットで使用できるその他のポートレット・モードへもアクセスできます。
ページにポートレットを追加したユーザーがポートレット・ヘッダーを表示しないことを選択した場合、「処理」メニューは、マウス・ロールオーバー上に表示されるフェードインおよびフェードアウトのツールバーに表示されます。

- 最小化/リストア・アイコン - ポートレット・ヘッダーのみが表示されるようにポートレットの内容を閉じる、ポートレット・ヘッダー内の「最小化」アイコン。これによって、ページからポートレットを完全に削除せずにページ上のスペースを節約してクラッタを減らすことができます。ポートレットを最小化すると、クリック時に再び内容を表示する「リストア」アイコンが表示されます。

- サイズ変更ハンドル - ユーザーがポートレットのサイズを変更できるようにするポートレット右下の領域。

- スクロール・バー - ポートレットに指定された幅と高さにポートレット・コンテンツがおさまらない場合に、表示され、最初に表示されていないコンテンツへのアクセスを可能にします。

- ポートレット・コンテンツ - ポートレット・ロジックによって決定されているポートレットの実際のコンテンツ。

ページでレンダリングされるポートレット構造は、次の2つのファクタで制御されます。

- ポートレット開発者によって決定されるポートレットそのもののロジック。これには、ポートレットがどのポートレット・モードをサポートしているかも含まれます。

- 設計時にページにポートレットを追加したアプリケーション開発者によって決定される、ポートレットをページにバインドするポートレット・タグの属性。

たとえば、ポートレットを設計する場合、ポートレット開発者はポートレットにヘルプ・モードを実装できます。アプリケーション開発者がページにポートレットを追加する際に、ポートレット・タグ属性isHelpModeAvailableを使用して、ポートレットの「アクション」メニューに「ヘルプ」コマンドを含めるかどうかを決定できます。アプリケーション開発者がisHelpModeAvailableをfalseに設定した場合、「ヘルプ」コマンドは、ポートレット・ロジックで提供されていても「アクション」メニューには含まれません。逆に、ポートレット開発者がポートレットにヘルプ・モードを実装していない場合、isHelpModeAvailableがtrueに設定されていても、「ヘルプ」コマンドは、「アクション」メニューに表示されません。

ポートレット・タグに使用できる各種属性の詳細は、第62.7項「ポートレット・タグの属性値の設定」を参照してください。

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.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は、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とWSRPの知識があるアプリケーション開発者。

使用する場合

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の詳細は、第63章「OmniPortletを使用したポートレットの作成」を参照してください。

OmniPortletのかわりとして、SQLデータベースまたはWebサービスからデータを公開する場合、ビジネス・マッシュアップの使用を検討する必要があります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のビジネス・マッシュアップの作成に関する項を参照してください。

57.3.5 Webクリッピング・ポートレット

注意:

Webクリッピング・ポートレットは、リリース11g (11.1.1.7.0)では非推奨になっています。Oracle WebCenter Portalのページレット・プロデューサを使用してクリップ・ページレットを使用することを検討してください。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の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クリッピング・ポートレットの詳細は、第64章「Webクリッピングを使用したコンテンツ・ベースのポートレットの作成」を参照してください。

57.3.6 ポートレット・テクノロジ

新しいポートレットを作成する場合、使用できるテクノロジは何種類かあります。使用するテクノロジはいくつかの要因によって決まります。

表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.4ポートレット開発

この項には次のサブセクションが含まれます:

- 第57.4.1項「ポートレット・モード」

- 第57.4.2項「ポートレット間通信」

- 第57.4.3項「ポートレットのパーソナライズとカスタマイズ」

- 第57.4.4項「ポートレット・パフォーマンス」

- 第57.4.5項「複数言語に対応したポートレット」

- 第57.4.6項「ポートレット・デプロイメント」

57.4.1 ポートレット・モード

ポートレット・モードは、実行時機能をユーザーが確認できるようにするものです。WebCenter Portalは、次の標準ポートレット・モードをサポートします。

- 表示モード

- 編集モード

- デフォルト編集モード

- ヘルプ・モード

- 情報モード

WebCenter Portalは、サポートする一連の拡張モードを定義します。各種モードは、JSR 286ポートレットに使用できます。たとえば、JSR 286 Javaポートレットの作成ウィザードには、「印刷」モードがあり、これを使用してポートレットの印刷用のバージョンを使用できます。

コーディング・ポートレットをJSR 286にコーディングする場合は、portlet.xmlファイルに独自のカスタム・ポートレット・モードも宣言できます。これらを使用してポートレットで提供するその他の機能に対応できます。

カスタム・ポートレット・モードの定義は、特に、ポートレットを他のベンダーのポータル実装と相互運用する場合に役立ちます。これらのモードはすべてユーザーに提供できます。実際に、デフォルト編集モードのようなモードの提供をお薦めします。

注意:

サード・パーティのポータル製品には、プロデューサが提供できる各自の拡張モード・セット(JSR 286カスタム・モード)があります。Frameworkアプリケーションでは、ポートレットのクロムUIは、WebCenter Portalで定義されるカスタム・モードのみを表示します。サード・パーティまたはカスタム・ポートレット・プロデューサが提供する任意のカスタム・モードは無視されるため、サポートされません。

この項には次のサブセクションが含まれます:

- 第57.4.1.項「表示モード」

- 第57.4.1.2項「編集モード」

- 第57.4.1.3項「デフォルト編集モード」

- 第57.4.1.4項「ヘルプ・モード」

- 第57.4.1.5項「情報モード」

57.4.1.1 表示モード

ポートレットは表示モードを使用して他のポートレットとともにページ上に現れます。ポートレットといえば、ほとんどの人がこのモードを思い浮かべます。JSR 286ポートレットは表示モードを持つ必要がありますが、他のモードはオプションです。

ポートレットの開発時には、ページ上でポートレットの外観に影響を与える可能性のあるすべての要素(ポートレットのコンテナ・オブジェクトや、開発したポートレットがページを共有する他のポートレットなど)について検討する必要があります。たとえば、ポートレットをHTML表のセル内に配置するとします。ポートレットは、表のセル内でレンダリングできるコンテンツしか表示しないはずです。さらに、表のセルの実際のサイズは、エンド・ユーザー設定、ブラウザの幅、およびポートレットに表示されるコンテンツの量とスタイルによって変わる場合があります。

57.4.1.1.1 ポートレットのレンダリングに関するHTMLガイドライン

プレーンHTMLは最も基本的なポートレットのレンダリング方法であり、ポートレットの開発者に大きな柔軟性を提供します。リンク、フォーム、イメージ、表など、HTMLの表のセル内に表示できるほとんどの標準的なHTMLパラダイムを使用できます。HTMLが適切に作成されていない場合は、異なる複数のブラウザで表示したときに表示の一貫性がなくなり、ページの一部が表示されないこともあります。次のルールに従ってください。

- 標準HTMLを使用する - HTMLの公式な仕様はW3Cから入手できます。詳細は、http://www.w3c.org/を参照してください。

- 長い複雑なHTMLは避ける - 使用するHTMLはサイトのパフォーマンスの印象に影響します。ユーザーは、リクエストしたページの表示にかかる時間に基づいてパフォーマンスを判断します。ブラウザには、HTMLを解釈して表示するための時間が必要です。ポートレットが複雑なHTMLをレンダリングしたり、サード・パーティのアプリケーションなど外部リソースを待機する場合は、ページのレンダリングが大幅に遅くなることがあります。

- 閉じていないタグや外部タグを避ける - ページはブラウザの動作の影響を受けるため、タグが正しく閉じていないとページの動作は予測不可能になります。

- コンテナ・オブジェクトによって課される制限を考慮する - ポートレットが表のセルなどのHTML要素に含まれない場合、ポートレットがコンテナ内でレンダリングできることを確認する必要があります。たとえば、表のセルにポートレットを置く場合、これらは表への挿入時には表示されないためポートレット内でフレームを使用することはできません。

- ポートレット・コンテンツを簡潔に保つ - 全画面のコンテンツを取得して、小さなポートレットから公開しないでください。ポートレットのコンテンツが小さくなりすぎて、小さなモニターではポートレットが使用不能になる場合があります。

- ポートレットに固定幅のHTML表示を作成しない - ユーザーのページ上にポートレットが持つ列の幅を伝える方法はありません。与えられた空間よりも広い空間がポートレットに必要な場合、一部のブラウザでは、他のポートレットとオーバーラップする可能性があります。

- 長い、途切れのないテキスト行を避ける - 固定幅の表を使用した場合と同様の結果になります。一部のブラウザでは、他のポートレットとオーバーラップする可能性があります。

- ページのサイズ変更時の動作を確認する - ブラウザ・ウィンドウをサイズ変更した際のポートレットの動作をテストし、ポートレットがブラウザ・ウィンドウの様々なサイズで動作することを確認してください。

- デフォルト・ブラウザのフォント変更時の動作を確認する - エンド・ユーザーはどんなフォント・サイズでも好きなものを選択する可能性があり、彼らはいつでも変更する可能性があります。ポートレットは、その変更に対応する必要があります。

57.4.1.1.2 ポートレットのレンダリングに関するCSSガイドライン

ページ上のそれぞれのポートレットのフォントと色は、ユーザーが選択したスタイル設定に一致する必要があります。このために、これらのスタイル選択は、Cascading Style Sheet (CSS)を使用して自動的に埋め込まれます。その後、ポートレットは直接またはApplication Programming Interfac (API)を使用して、フォントと色の設定にアクセスします。

ブラウザによってCSS仕様の実装レベルが異なりますが、WebCenter Portalは、この仕様の非常に基本的なサブセットを使用して、整合性のあるフォントと色を実現します。CSSの実装レベルによってブラウザ間でのページの一貫性が影響されることはありません。CSSの使用に関する次のガイドラインを考慮してください。

- ハードコーディングのかわりにCSSを使用する - ハードコーディングのフォントとカラーはお薦めしません。フォントと色をハードコーディングすると、エンド・ユーザーがページ・スタイルの設定を変更した場合に、ポートレットが不釣合いに見えることがあります。開発者はエンド・ユーザーが設定するフォントや色を予測できないため、ユーザーが選択した背景色と同じフォント色でハードコーディングする可能性があり、この場合、ユーザーにはポートレット・コンテンツが表示されなくなります。

- テキストの書式設定にはCSS APIを使用する - スタイルシートの定義はページの最上部にありますが、直接コールしないでください。かわりに、テキストの適切な書式設定のために用意されているAPIを使用してください。これによって、後でスタイルシートが変更された場合でもポートレットは正しく動作します。

- 絶対配置にCSSの使用は避ける - ユーザーは各自のポータル・ページをパーソナライズできるため、ポートレットがページ上の特定の位置に表示される保証はありません。

- アクセシビリティの標準に従う - 必ず既存のアクセシビリティの標準に従って、スタイルシートを記述してください。詳細は、http://www.w3c.org/TR/WCAG10-CSS-TECHSを参照してください。

57.4.1.2 編集モード

ポートレットは編集モードを備えており、これによってユーザーはポートレットの動作をパーソナライズできます。パーソナライズはこれらを実行するユーザーのみに表示され、他のユーザーには表示されません。編集モードには設定のリストがあり、ユーザーはその設定を変更できます。設定には、タイトル、コンテンツの種類、書式、情報量、フォーム要素のデフォルト、およびポートレットの外観や内容に影響する他のあらゆる要素が含まれます。

通常、ユーザーは、ポートレット・ヘッダーの「パーソナライズ」アイコンをクリックしてポートレットの編集モードにアクセスします(図57-2)。

図57-2 ポートレットの編集モードにアクセスするための「パーソナライズ」アイコン

「図57-2 ポートレットの編集モードにアクセスするための「パーソナライズ」アイコン」の説明

ユーザーが「パーソナライズ」をクリックすると、同じブラウザ・ウィンドウに新しいページが表示されます。このポートレットは、通常、ポートレットの設定を選択するダイアログを表すWebページを作成します。設定を適用すると、自動的に元のページに戻ります。

57.4.1.2.1 編集モード操作に関するガイドライン

次のガイドラインに従って、編集モードでユーザーに公開する内容を管理してください。

- ポートレットのタイトルをユーザーがパーソナライズできるようにする - 同じポートレットが同じポータル・ページに複数回追加されることがあります。ユーザーがタイトルをパーソナライズできると混乱を避けることができます。

- キャッシュを使用する場合はコンテンツを無効化する - パーソナライズによってポートレットの表示やコンテンツに変更が生じた場合は、ポートレットのコンテンツがキャッシュから再生成されることを確認する必要があります。確認しないと、誤ったコンテンツが表示されることがあります。

- 編集モードを管理ツールとして使用しない - 編集モードは、エンド・ユーザーがポートレットの動作を変更するために使用します。プロデューサ設定の変更などの管理タスクが必要な場合は、そのタスク専用の安全なポートレットを作成してください。

57.4.1.2.2 編集モードのボタンに関するガイドライン

整合性を維持し、ユーザーにとっても便利なように、次のボタンを次の順序で編集モードに実装してください。

- OK - エンド・ユーザーのパーソナライズを保存し、ポートレットを表示モードに戻します。

- 適用 - エンド・ユーザーのパーソナライズを保存し、現在のページをリロードします。

- 取消 - 変更を保存せずに、ポートレットを表示モードに戻します。

57.4.1.3 デフォルト編集モード

ポートレットはデフォルト編集モードを備えており、アプリケーション管理者はこのモードを使用して、特定のポートレット・インスタンスのデフォルト動作を実行時にカスタマイズできます。デフォルト編集モードには設定のリストがあり、アプリケーション管理者はその設定を変更できます。設定には、タイトル、コンテンツの種類、書式、情報量、フォーム要素のデフォルト、またはポートレットの外観や内容に影響するあらゆる要素が含まれます。

パーソナライズは個々のユーザーのポータル・インスタンスに影響しますが、デフォルト編集モードで行われたカスタマイズはすべてのユーザーのポートレット・インスタンスに影響します。デフォルト編集モードは、ポートレットの表示内容と表示形式に対してシステム・レベルのデフォルトを定義するためのモードであるため、このモードを管理ツールとして使用したり、他のポートレットの管理に使用したりすることは避けてください。

アプリケーション管理者はページの編集時にポートレット・ヘッダーの「カスタマイズ」アイコンをクリックすることでデフォルトの編集モードにアクセスします(図57-3)。

図57-3 ポートレットのデフォルトの編集モードにアクセスするための「カスタマイズ」アイコン

「図57-3 ポートレットのデフォルトの編集モードにアクセスするための「カスタマイズ」アイコン」の説明

ユーザーが「カスタマイズ」をクリックすると、同じブラウザ・ウィンドウに新しいページが表示されます。このポートレットは、通常、ポートレット・インスタンスの設定をカスタマイズするダイアログを表すWebページを作成します。設定を適用すると、ユーザーは自動的に元のページに戻されます。

57.4.1.3.1 デフォルト編集モード操作に関するガイドライン

デフォルト編集モードでアプリケーション管理者に公開する内容は、次のガイドラインに従う必要があります。

- デフォルト編集モードを管理ツールとして使用しない - デフォルト編集モードは、アプリケーション管理者がポートレットの動作を変更するために使用します。プロデューサ設定の変更などの管理タスクが必要な場合は、そのタスク専用の安全なポートレットを作成してください。

57.4.1.3.2 デフォルト編集モードのボタンに関するガイドライン

整合性を維持し、ユーザーにとっても便利なように、次のボタンを次の順序でデフォルト編集モードに実装してください。

- OK - アプリケーション管理者のカスタマイズを保存し、ポートレットを表示モードに戻します。

- 適用 - アプリケーション管理者のカスタマイズを保存し、現在のページをリロードします。

- 取消 - 変更を保存せずに、ポートレットを表示モードに戻します。

57.4.1.3.3 カスタマイズ値のレンダリングに関するガイドライン

カスタマイズ設定の変更に使用されるフォームを表示する場合、アプリケーション管理者が何度も設定を再入力せずにすむように値のデフォルト値を設定する必要があります。動作の整合性を維持するために、カスタマイズ値のレンダリングは次の順序で行います。

- インスタンス設定 - ポートレット・インスタンスのシステム・デフォルトを問い合せて表示します。

- ポートレット・デフォルト - システム・デフォルトのカスタマイズがない場合は、一般的なポートレットのデフォルトを表示しますが、空白の場合があります。一般的なポートレットのデフォルトはポートレットにハードコーディングされている場合がありますが、システム・デフォルトで上書きしてください。

57.4.1.4 ヘルプ・モード

ポートレットは、ヘルプ・モードを使用して、そのポートレットの機能と使用方法に関する情報を表示します。ユーザーはこのモードで、ポートレットおよびそのコンテンツと機能に関する有用な情報を検索できます。

ユーザーは、「アクション」メニューの「ヘルプ」オプションを選択することでポートレットのヘルプ・モードにアクセスします(図57-4)。

図57-4 ポートレットの「アクション」メニューの「ヘルプ」オプション

「図57-4ポートレットの「アクション」メニューの「ヘルプ」オプション」の説明

57.4.1.4.1 ヘルプ・モードに関するガイドライン

ヘルプ・モードで公開する内容は次のガイドラインに従ってください。

- ポートレットの使用方法を説明する - ユーザーは、ポートレットが提供するすべての機能をそのインタフェースからだけでは確認できない場合があります。ポートレットの機能とその活用方法を説明してください。

57.4.1.5 情報モード

ポートレットは情報モードを使用してユーザーに現在実行中のポートレットのバージョン、発行と著作権の情報、ポートレット開発者への連絡方法などの情報を提供します。登録が必要なポートレットは、情報モードからもWebベースの登録アプリケーションまたは連絡先情報にリンクできます。

ユーザーは、「アクション」メニューの「バージョン情報」オプションを選択することでポートレットの情報モードにアクセスします(図57-5)。

図57-5 ポートレットの「アクション」メニューの「バージョン情報」オプション

「図57-5ポートレットの「アクション」メニューの「バージョン情報」オプション」の説明

同じブラウザ・ウィンドウに新しいページが表示されます。このページにコンテンツを生成するか、またはユーザーを既存のページやアプリケーションに移動させることができます。

57.4.1.5.1 情報モードに関するガイドライン

次のガイドラインに従って、情報モードでユーザーに公開する内容を管理してください。

- 関連する著作権、バージョン、開発者情報を表示する - ユーザーは使用しているポートレットは何か、どこで詳細を得ることができるかを知る必要があります。この情報ページは、ポートレットのサポート時に重要になることがあります。

57.4.2 ポートレット間の通信

ポートレット間通信により、ポートレットはデータを共有してイベントに対応できます。WebCenter Portalは、パラメータとイベントを通じたポートレット間通信をサポートします。

- パラメータ - パブリック・レンダラ・パラメータにより、ポートレット間のパラメータ値を共有することでポートレット間通信が可能になります。たとえば、マップ・ポートレットと天気ポートレットが両方ともZipcodeパラメータを使用するように構成されている場合、マップ・ポートレットに郵便番号を入力すると、天気ポートレットの同じパラメータ値が更新されます。
パブリック・レンダラ・パラメータの詳細は、第59.3.5項「JSR 286ポートレットでのパブリック・レンダラ・パラメータの使用方法」を参照してください。

- イベント - ポートレットを含むページ上で、または同じページ上の別のポートレットで実行されるアクションなど、ポートレットそのものの外側で発生するアクションに対応する機能をポートレットに提供することでポートレット間通信を可能にします。ポートレット・イベントは、ポートレットがそれ自体のイベントをトリガーすることでイベントに応答し、それがそのページ上の他のポートレットに影響を与えるようにカスケードできます。
ポートレット・イベントの詳細は、第59.3.6項「JSR 286ポートレットでのポートレット・イベントの使用方法」を参照してください。

WebCenter Portalでは、パラメータとイベントが同じ名前を共有している、または適切な別名を定義していれば、ポートレット間通信がデフォルトで自動的に発生します。この通信を可能にするために追加コードを提供する必要はありません。詳細は、第62.6.3項「ポートレット間通信に関する必知事項」を参照してください。

Oracle JSF Portlet Bridgeを使用して作成されるポートレットに固有のポートレット間通信ガイドラインは、第58.5項「イベントを使用したその他のポートレットとのJSFポートレットのリンク」を参照してください。

57.4.3 ポートレットのパーソナライズとカスタマイズ

ポートレット・プリファレンスによってエンド・ユーザーはポートレットを実行時にパーソナライズまたはカスタマイズできます。パーソナライズはこれらを実行するユーザーのみに表示され、他のユーザーには表示されません。カスタマイズは、ポートレットをパーソナライズしていないすべてのユーザーに表示されます。

ポートレット・プリファレンスによって、ポートレットの再利用性が大幅に向上します。同じポートレットを複数のページ上で、または同じページ上で複数回インスタンス化できます。ポートレット・プレファレンスを使用することで、ポートレットの各インスタンスは様々な方法で動作できますが、使用するコードとユーザー・インタフェースは同じままです。

たとえば、JDeveloperウィザードを使用してJSR 286ポートレットをデフォルトで作成すると、ユーザーが実行時にポートレットのタイトルを変更できるようにするポートレット・プリファレンスが作成されます。ポートレットの作成中に、またはポートレットの作成後にportlet.xmlファイルを編集することで、追加のポートレット・プリファレンスを作成して、実行時のユーザーによるその他のポートレット変更を可能にすることができます。

ポートレット・プリファレンスは、登録やポートレット・ハンドルなどの、登録およびポートレット・インスタンスに関する情報とともに永続ストアに格納されます。ポートレット・プロデューサは、3種類の永続ストアのうちの1つを使用できます。

- コンシューマ - コンシューマ永続ストアは、プロデューサ・メタデータをコンシューマ・アプリケーションに関連付けます。本番環境ではコンシューマの永続性を使用することをお薦めします。

- データベース - データベース永続ストアは、リレーショナル・データベースを使用してデータを永続化します。

- ファイル - ファイルベースの永続ストアは、ファイル・システムを使用してデータを永続化します。

データベースの依存性が削除されるため、テストにはファイルベースまたはコンシューマ永続ストアを使用することができます。ただし、高可用性構成では、データベースまたはコンシューマ永続ストアを使用することをお薦めします。

デフォルトでは、JSR 286およびJSFポートレットではコンシューマ永続ストアが使用されます。このデフォルト設定の変更方法の詳細は、第59.3.13.1項「WSRPプロデューサ用の永続ストアのセットアップ」を参照してください。

テスト環境から本番環境への移行の詳細は、第59.3.13.2項「WSRPプロデューサの永続ストアの移行」を参照してください。

57.4.4 ポートレット・パフォーマンス

キャッシュは、高度な動的コンテンツを含むWebサイトのパフォーマンスの向上に使用される一般的な手法です。この手法では、キャッシュと呼ばれる待機時間の短い大きなデータ・ストアを備えたローカル・エージェントを使用してリクエストをプロキシ化することで、動的コンテンツのデータの取得と出力の生成に伴うオーバーヘッドを大幅に削減できます。キャッシュ・エージェントは、リクエストに対して次のいずれかの方法で応答します。

- リクエストされたコンテンツの有効なバージョンがキャッシュ内に存在する場合、エージェントは既存のキャッシュ・コピーをそのまま戻します。これによって、コンテンツの取得と生成というコストがかかるプロセスを省くことができます。この状態は、キャッシュ・ヒットと呼ばれます。

- リクエストされたコンテンツの有効なバージョンがキャッシュ内に存在しない場合、エージェントはリクエストをその宛先に転送し、コンテンツが戻されるのを待機します。エージェントはコンテンツをリクエスト元に戻し、そのキャッシュ内にローカル・コピーを格納して、同じコンテンツに対するリクエストが後で発生した場合に再利用します。この状態は、キャッシュ・ミスと呼ばれます。

ポートレット・プロデューサは、動的コンテンツ(つまり、ポートレット)の生成元であり、多くの場合、デプロイされているFrameworkアプリケーション・インスタンスから離れた場所にあります。このため、キャッシュによるパフォーマンス向上が可能となります。アーキテクチャは、キャッシュに適切です。プロデューサでレンダリングされたポートレットをキャッシュし、キャッシュされたコピーを再利用して後続のリクエストを処理することによって、プロデューサがページ作成にもたらすオーバーヘッドを最小限にできます。ポートレット・キャッシュは、ユーザー・リクエストに対して迅速にレスポンスするための鍵です。

JSR286ポートレットについては、2とおりのキャッシュ方法があります。これらのキャッシュ方法の主な違いは、コンテンツが有効かどうかを判断する方法にあります。

- 有効期限ベースのキャッシュ - プロデューサはレンダリング・リクエストを受信すると、そのレスポンスに有効期限のスタンプを付けます。レンダリングされたレスポンスはキャッシュに格納され、同じコンテンツに対する後続のすべてのリクエストは、有効期限が経過するまで、このキャッシュを使用して処理されます。このキャッシュ・スキームは最も簡単でパフォーマンスが優れていると考えられます。それは、キャッシュの有効性をテストするためのオーバーヘッドがほとんどなく、ネットワークのラウンドトリップを伴わないためです。有効期限ベースのキャッシュは、コンテンツの使用期間が効率よく定義されているアプリケーションに適しています。コンテンツの使用期間が確実ではない場合、有効期限ベースのキャッシュは効果的ではありません。
ポートレット・コンテンツが静的である場合、またはコンテンツの表示が最新であることが重要でない場合は、有効期限ベースのキャッシュの使用を検討します。

ポートレットに対する有効期限ベースのキャッシュの実装方法の詳細は、第59.3.9.1項「JSR 286ポートレットの有効期限ベースのキャッシュの実装」を参照してください。

- 有効化ベースのキャッシュ - レンダリング・リクエストを受信したプロデューサは、そのレスポンスにバージョン識別子(またはETag)のスタンプを付けます。この方法でもレスポンスはキャッシュされますが、キャッシュされたコンテンツをコンシューマが再利用する前に、キャッシュされたコンテンツがまだ有効かどうかを判断する必要があります。そのために、キャッシュされたコンテンツのバージョン識別子を含めたレンダリング・リクエストをプロデューサに送信します。プロデューサは、このバージョン識別子が有効であるかどうかを判断します。バージョン識別子が有効である場合、プロデューサはコンテンツを含まない軽量のレスポンスをコンシューマに即座に送信し、キャッシュされたバージョンを再利用できることを通知します。バージョン識別子が無効な場合、プロデューサは新しいバージョン識別子を含む新しいコンテンツを生成し、以前にキャッシュされたバージョンを置き換えます。このキャッシュ形式では、コンシューマは常にコンテンツが最新であるかどうかをプロデューサと確認する必要があります。キャッシュされたコピーの有効性は、プロデューサのロジックによって判断されます。この方法では、固定期間に依存するのではなく、キャッシュされたコンテンツの使用をプロデューサが管理できるという利点があります。
頻繁な変更または予測不可能な変更がある動的コンテンツを含むポートレットの場合、有効化ベースのキャッシュの使用を検討します。

ポートレットに対する有効化ベースのキャッシュの実装方法の詳細は、第59.3.9.2項「JSR 286ポートレットの検証ベースのキャッシュの実装」を参照してください。

キャッシュ・ルールは、ポートレットのコンテナ・レベルで指定でき、ポートレット独自のロジックでエンコードするか、ポートレット・ウィザードを介して設定することができます。ルールが指定されているとすると、キャッシュがポートレット・コードに含まれていない場合は、コンテナ・レベルのキャッシュが引き継ぎます。

アプリケーション・レベルでは、WebCenter Portal: Frameworkにより、アプリケーション・レベルのキャッシュ・ルールの設定に対するJavaキャッシュの使用がサポートされます。

アプリケーション・レベルでキャッシュを有効にする場合、Javaキャッシュにポートレット・コンテンツのコピーを保持するように指示します。以前にキャッシュされたデータがリクエストされると、データ・ソースとの通信やそのコンテンツの再生に時間がかかりません。かわりに、以前にキャッシュされたポートレット・コンテンツが戻されます。

JSFポートレットおよびカスタムJavaポートレットでは、有効期間および有効化ベースのキャッシュがサポートされています。これらのポートレットは、全部をキャッシュすることも、Edge Side Includes (ESI)を使用してポートレットのフラグメントをキャッシュすることもできます。

57.4.5 複数言語に対応したポートレット

ポートレットは次の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.6ポートレットのデプロイ

アプリケーションでポートレットを登録および使用できるようにするには、まずポートレットをデプロイする必要があります。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-6は、WSRPプロデューサの基本的なアーキテクチャを示しています。

図57-6 WSRPプロデューサのアーキテクチャ

「図57-6 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項「統合WebLogic Serverを使用してのJSFポートレットのテスト」

- 第58.4項「WebLogic Managed ServerへのJSFポートレットのデプロイ」

- 第58.5項「イベントを使用したその他のポートレットとのJSFポートレットのリンク」

- 第58.6項「JSFポートレットの作成時の必知事項」

- 第58.7項「実行時作成スキンのJSFポートレット・プロデューサ・アプリケーションへのコピー」

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は、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.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.1項「ポートレット・モード」を参照してください。

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 統合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.

詳細は、第4.3項「統合WebLogic Serverの使用」を参照してください。

2. これでポートレット・プロデューサ・アプリケーションを統合WLS上で実行する準備ができました。Webアプリケーションとポートレット・プロデューサ・アプリケーションは、1つで同じもの(ポートレット・プロデューサ・アプリケーションは、ポートレット・アーティファクトが追加されている既存のアプリケーションです)であるため、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. ポートレットを含むアプリケーションのデプロイに成功すると、それを他の任意のアプリケーションにポートレット・プロデューサとして登録できます。詳細は、第62.2.1項「WSRPポートレット・プロデューサの登録方法」を参照してください。

注意:

Oracle JSF Portlet BridgeがWSRP 2.0機能を使用している場合、WSRPプロデューサ・テスト・ページに一覧されているWSRP v2 WSDL URLを使用してプロデューサを登録する必要があります。

アプリケーションは、通常のWebアプリケーションとして引き続きアクセスすることも、ポートレット・プロデューサとして使用することもできます。

5. ポートレット・プロデューサをデプロイし、登録すると、自分のJSFアプリケーションのポートレットを他のポートレットと同じように使用できます。詳細は、第62.6項「ページへのポートレットの追加」を参照してください。

58.4 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.5 イベントを使用したその他のポートレットとの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.5.1項「別のJSFポートレットへのJSFポートレットのリンク方法」

- 第58.5.2項「JSR 286ポートレットへのJSFポートレットのリンク方法」

- 第58.5.3項「JSFポートレットへのJSR 286ポートレットのリンク方法」

- 第58.5.4項「Oracle JSF Portlet Bridgeのポートレット・イベントに関する必知事項」

ヒント:

本項の例をすべて含むZIPファイルは次からダウンロードできます。

http://www.oracle.com/technetwork/middleware/webcenter/ps3-samples-176806.html

58.5.1 別のJSFポートレットへのJSFポートレットのリンク方法

部門タスク・フローは、タスク・フロー内で部門行が選択されている場合に、コンテキスト・イベントdepartmentSelectedを呼び出します。このイベントは、最終的にeventBindingによって呼び出されます。これは部門タスク・フローで使用される部門ビューのページ定義の行選択リスナーからトリガーされます(例58-3)。

イベントのペイロード(hr.Departmentタイプのオブジェクトで、部門表の1行を表すJavaオブジェクト)は、現在の行をdepartments表イテレータからポイントするcustomPayload属性を使用して生成されます。

この例で使用されている手法のような標準的なADFコンテキスト・イベント手法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のコンテキスト・イベントの作成に関する項を参照してください。

例58-3 部門タスク・フロー(DepartmentsPageDef.xml)のページ定義でのコンテキスト・イベント

<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.xml)

<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イベントのイベント定義(portlet.xml)

<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の定義(EmployeesPageDef.xml)

<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 ポートレット化された従業員タスク・フローのページ定義でのイベント・マップ(EmployeesPageDef.xml)

<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ポートレットのリンク

「図58-1 JSFポートレットのリンク」の説明

自動的なイベント・リストを使用しないことを選択することもできます。たとえば、同じイベントを使用する同じページ上に複数のポートレットを持ち、それらの間のイベントのフローを制御する場合などに選択できます。または、リンクするJSFポートレットで使用されているコンテキスト・イベントの名前が一致しない場合にも選択します。この場合、ポートレット化されたタスク・フローを含むページのページ定義にイベント・マップを明示的に作成する必要があります。このイベント・マップは、まとめて連結するポートレットのポートレット・イベントをリンクします。例58-8は、従業員タスク・フローがdepartmentSelectedのかわりにdepartmentIdというイベントを予測している場合に、この例でこれがどのような働きをするかを示しています。

例58-8 ページを使用して手動でJSFポートレットをリンクするためのページ定義内のイベント・マップ(BridgeToBridgeExplicitMappingPageDef.xml)

<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.5.2 JSR 286ポートレットへのJSFポートレットのリンク方法

他のJSFポートレットをJSFポートレットにリンクするのと同様に、JSFポートレットは通常のJSR 286ポートレットにリンクすることもできます。これを実行するには、JSR 286ポートレットがコンテキスト・イベントを受け入れることができると明示的に宣言していることを確認する必要があります。

たとえば、前述の例から部門タスク・フローを部門アドレス・ポートレットJSR 286ポートレットにリンクして、選択されている部門のアドレスを表示できます。

自動的なイベントの関連付けが有効となるために、部門アドレス・ポートレットは、部門ポートレットからコンテキスト・イベントを受け入れ可能であることを宣言する必要があります。これは、次の2つの方法で実行できます。

- ポートレット・プロデューサ・アプリケーションのportlet.xmlファイルでは、部門アドレス・ポートレットがdepartmentSelectedコンテキスト・イベントを直接サポートします。

<supported-processing-event id="departmentSelected">
<qname xmlns:x="http://xmlns.oracle.com/adfm/contextualEvent">
x:departmentSelected
</qname>
</supported-processing-event>

- 部門アドレス・ポートレットのdepartmentイベント(portlet.xmlファイルに定義されている)のイベント定義は、これを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のコードは、部門場所ポートレットのメソッドを含むDepartmentLocationPortlet.javaクラスに提供されます。

例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ポートレットのリンク

「図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.5.3 JSFポートレットへのJSR 286ポートレットのリンク方法

ポートレット・イベントをJSR 286ポートレットからJSFポートレットに送信することもできます。ポートレット・イベントは、Oracle JSF Portlet Bridgeによってコンテキスト・イベントに変換され、使用されるプロデューサADFアプリケーションに標準的なコンテキスト・イベント手法を使用して配信されます。

部門タスク・フローに使用される部門ビューのページ定義は、DepartmentsDataControl上のメソッドにバインドするmethodActionバンドを含みます(例58-11)。

例58-11 部門タスク・フローのページ定義でのmethodActionの定義(DepartmentsPageDef.xml)

<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 ポートレット化部門タスク・フローのページ定義でのイベント・マップ(DepartmentsPageDef.xml)

<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 部門場所ポートレットのポートレット・コードでのprocessActionの定義(DepartmentLocationsPortlet.java)

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ポートレットのリンク

「図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.5.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.6 JSFポートレットの作成時の必知事項

JSR 286ポートレット・マークアップ・フラグメント・ルールに準拠したマークアップを生成するようにJSFページをコーディングする必要があります。Oracle ADFを使用することを選択している場合、ページのマークアップの大部分は、Oracle ADF Facesのコンポーネントからのもので、マークアップは当然ポートレットと互換性のあるスタイルでレンダリングされるか、または互換性のあるスタイルにOracle JSF Portlet Bridgeが自動解釈できます(たとえば、ポートレットをインライン・フレームにレンダリングすることで)。

次の項では、ポートレットとして後で公開することにしたOracle ADFページをコーディングする際に生じる一般的な問題を回避する方法についてのガイダンスを示します。

この項には次のサブセクションが含まれます:

- 第58.6.1項「一般的なガイドライン」

- 第58.6.2項「ポートレット・ガイドライン」

- 第58.6.3項「セキュリティ・ガイドライン」

- 第58.6.4項「JSFガイドライン」

- 第58.6.5項「Oracle ADFのガイドライン」

58.6.1 一般的なガイドライン

一般的なガイドラインは次のとおりです。

- 第58.6.1.1項「アプリケーションはWebアプリケーションとして実行する必要がある」

- 第58.6.1.2項「ポートレットは様々なページに含まれる」

- 第58.6.1.3項「サーブレットの依存性」

- 第58.6.1.4項「保護されているアプリケーション」

- 第58.6.1.5項「ディープ・リンク」

- 第58.6.1.6項「Java EE認証」

- 第58.6.1.7項「タイムアウト期間」

58.6.1.1 アプリケーションはWebアプリケーションとして実行する必要がある

JSFアプリケーションからポートレットを作成する前に、そのページとタスク・フローをすべて含むアプリケーションが、統合WLSにデプロイされた後で適切に動作している必要があります。通常のWebアプリケーションとして実行できない場合、これはポートレット・プロデューサとしても実行できません。

58.6.1.2 ポートレットは様々なページに含まれる

ポートレットとして公開されるタスク・フローの作成時に考慮するべき領域とは、タスク・フローをポートレットとしてレンダリングするページが元のプロデューサ・アプリケーションのページと異なるということです。

発生する主な共通エラーは次のとおりです。

- 使用ページでJavaScriptへのアクセスを期待します。

- 使用ページの一部としてスコープに追加されたマネージドBeanまたはオブジェクトの検索を期待します。

- コンシューマからのJSFコンポーネント・ツリーにコンポーネントの存在を期待します。

58.6.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.6.1.4 保護されたアプリケーション

アプリケーションが保護されている場合は、第68.17項「WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護」に説明されているとおりに保護されたアイデンティティ伝播を実施していることを確認してください。

58.6.1.5 ディープ・リンク

ポートレットとの通常の対話処理については、コンシューマとプロデューサとの間で保持されるセッションがあります。これは、コンシューマにセッションCookieを保存し、それをリクエストの度にプロデューサに送信することで実行されます。元のリクエストでは、このセッションが確立され、以降のリクエストでは、ポートレットがセッションCookieをプロデューサに送信し、セッションが再利用されます。

ディープ・リンク、つまりポートレットからプロデューサ・アプリケーションへのリンクについては、リクエストはブラウザからプロデューサ・アプリケーションに直接送られます。この場合、セッションCookieは送信できないため新しいセッションが確立されます。ディープ・リンクに共有セッションが必要な場合、これは開発者が実装する必要があります。共通実装とは、この状態を、プロデューサおよびアプリケーションからアクセスできる共通の場所に書き込み、この状態に対する参照をディープ・リンクで渡すことです。

58.6.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.6.1.7 タイムアウト期間

レンダリングに時間のかかるアプリケーションについては、Oracle JSF Portlet Bridgeで作成されたプロデューサを登録するときに、タイムアウト期間を増やすことを検討してください。ただし、プロデューサ登録中に指定されたタイムアウト期間がadf-config-xmlで指定された最大タイムアウト期間(maximumTimeout要素)で制限されていることに注意してください。

58.6.2 ポートレットのガイドライン

ポートレット固有のガイドラインは次のとおりです。

- 第58.6.2.1項「ポートレットのサイズ変更」

- 第58.6.2.2項「リソースとリンク」

- 第58.6.2.3項「リクエストのリダイレクト」

- 第58.6.2.4項「メモリー使用量」

- 第58.6.2.5項「WSRPバージョン」

58.6.2.1 ポートレットのサイズ変更

JSFポートレットを使用している場合、コンシューマ・アプリケーションはインライン・フレーム内でポートレット・コンテンツを自動的にレンダリングします。これは、いずれのインライン・ポップアップもインライン・フレーム内に限定されることを意味します。これは、ポートレットのサイズを指定する際に考慮する必要があります。

JSFポートレットがポートレット化されたページである場合、コンテンツの完全なコントロールが可能で、コンテンツ・ファイルがインライン・フレーム・ウィンドウを埋める方法を決定でき、コンテンツがブラウザのウィンドウを埋める方法を決定するときとまったく同じテクニックを活用できます。

ポートレットがコンシューマ・アプリケーション内のその先祖までストレッチされている場合、Oracle JSF Portlet Bridgeによって生成されたドキュメントのaf:documentコンポーネントのmaximized属性がtrueに設定されます。つまり、これをサポートするpanelStretchLayoutなどのコンポーネントはインライン・フレーム全体を埋めます。

ポートレットのサイズ変更の詳細は、第62.6.5項「ポートレットのサイズ変更に関する必知事項」を参照してください。

58.6.2.2 リソースとリンク

リソースおよびリンクについては、web-app-context-rootを基準として場所を指定する必要があります。そうしないと、ポートレットがイメージやその他のリソースを見つけられません。相対パスの表記(../)を使用しないでください。Oracle WebCenter Portal: Frameworkのポートレットは、リモートで実行され、SOAPプロトコル(WSRP)を使用してアクセスされます。後者は、通常のWebアプリケーションのリクエスト・パスの概念が、JSR 286コンテナでは意味がないということです。JSR 286仕様では、すべてのリソースURLが絶対パスまたはコンテキスト相対パスのいずれかであることが規定されていることにこれが反映されています。

58.6.2.3 リクエストのリダイレクト

リクエストをJSP内でリダイレクトまたは転送しないでください。JSR 286では、requestDispatcher.include()のみがサポートされます。httpServletResponse.sendRedirect()またはrequestDispatcher.forward()を使用すると、例外やエラーが発生します。ポートレット環境で正常に作業を行うには、faces-config.xmlでのJSFナビゲーション・ルールまたはOracle ADFタスク・フローの制御フロー・ルールを実装する必要があります。

58.6.2.4 メモリー使用量

Oracle JSF Portlet Bridgeは、リクエスト間のリクエスト・スコープのコンテンツを保存し、リクエスト・スコープがActionポートレットとRenderポートレット(これらは2つの別個のリクエスト)との間で予約されるようにします。このため、メモリー使用量全体を最小限に抑えるには、アプリケーションがJSFポートレットを含む場合にリクエスト・スコープ内にあまりデータを保存しすぎないようにする必要があります。

58.6.2.5 WSRPバージョン

Oracle JSF Portlet Bridgeは、Portlet 2.0機能を利用します。そのため、これはWSRP V2以外では使用しないようにしてください。ポートレットのminimumWsrpVersionコンテナ・ラインタイム・オプションは2に設定する必要があります。詳細は、第59.3.4項「JSR 286ポートレットのランタイム環境をカスタマイズする方法」を参照してください。

58.6.3 セキュリティ・ガイドライン

セキュリティ固有のガイドラインは次のとおりです。

- 第58.6.3.1項「Oracle ADF保護されたアプリケーション」

- 第58.6.3.2項「ロール・ベースの認証」

58.6.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.6.3.2 ロール・ベースの認証

ロール・ベースの認証を持つタスク・フローまたはページをポートレット化する(つまりタスク・フローまたはページに特定のロールが付与される)場合、ユーザーに正しく伝播するためにWS-Securityが必要です。WS-Securityを設定する場合、伝播されたユーザーがタスク・フローを表示する権限を持たないと、JSFポートレットはコンテンツをレンダリングしません。

プロデューサへのWS-Securityの設定の詳細は、第68.17項「WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護」を参照してください。

使用するアプリケーションでプロデューサを登録する場合、必ず適切なセキュリティ・プロパティを設定する必要があります。詳細は、第62.2.1項「WSRPポートレット・プロデューサの登録方法」を参照してください。

58.6.4 JSFガイドライン

JSF固有のガイドラインは次のとおりです。

- 第58.6.4.1項「h:commandLinkの使用」

58.6.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.6.5 Oracle ADFのガイドライン

Oracle ADF固有のガイドラインは次のとおりです。

- 第58.6.5.1項「タスク・フロー・リターン」

- 第58.6.5.2項「不一致のスタイル・シート」

- 第58.6.5.3項「ADF Facesのダイアログ・フレームワーク」

- 第58.6.5.4項「コンポーザ・コンポーネント」

- 第58.6.5.5項「fileDownloadActionListenerコンポーネント」

- 第58.6.5.6項「prepareModelフェーズ」

- 第58.6.5.7項「リクエスト・パラメータへのアクセス」

- 第58.6.5.8項「ページ・パラメータの参照」

- 第58.6.5.9項「Trinidadコンポーネント」

- 第58.6.5.10項「コンポーネントを見つけるためのADF Facesクライアント側APIの使用」

- 第58.6.5.11項「URLのエンコーディング」

58.6.5.1 タスク・フロー・リターン

ADFバインド・タスク・フローが完了すると、これはタスク・フロー・リターンを使用してコール元のタスク・フローに制御を戻すことができます。ポートレット化されたタスク・フローには、コール元のタスク・フローはないため、この状況ではタスク・フロー・リターンは意味がありません。これによって、タスク・フローはビューが選択されていない状況に移動するために、空のポートレットのようなものが表示される場合があります。タスク・フローは、入力パラメータの変更時に、またはプロデューサのセッションのリセット時にリフレッシュされるまで、この状態のままとなります。

タスク・フローのポートレット化を計画している場合は、タスク・フロー・リターンの使用を避ける必要があります。タスク・フロー・リターンを使用する必要がある場合、ポートレット化するタスク・フローのデフォルトのアクティビティを持つダミーのタスク・フローを提供する必要があります。タスク・フロー・リターンが実行されると、これはダミーのタスク・フローに戻ります。ダミー・タスク・フローは、そのデフォルトのアクティビティを実行します。これは元のタスク・フローにコール・バックすることであり、したがってそのタスク・フローはポートレットが次にコールされるときに再起動されます。

58.6.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.trinidadinternal.skin.SkinUtils" level=FINEST"/>

コンシューマ・ページを実行すると、コンシューマとプロデューサのログ・ファイルと一致しないスキン・エントリはスキン不一致の原因となります。

58.6.5.3 ADF Facesダイアログ・フレームワーク

ADF Facesダイアログ・フレームワークはサポートされていません。アプリケーションがセカンダリ・ブラウザ・ウィンドウを起動するボタンまたはアイコンを含む場合、アプリケーションがポートレットとして実行される場合に新しいウィンドウの内容は正しく表示されません。そのため、アプリケーションのポートレット化を計画している場合は、これらのコンポーネントの使用は避ける必要があります。セカンダリ・ウィンドウを起動するコンポーネントの例は次のとおりです。

- <tr:inputDate>

- <tr:inputColor>

- <tr:popup>

- <af:commandButton>のuseWindow属性

58.6.5.4 コンポーザ・コンポーネント

コンポーザ・コンポーネントを含むページのポートレット化はサポートされていません。

58.6.5.5 fileDownloadActionListenerコンポーネント

<af.fileDownloadActionListener>コンポーネントはサポートされていません。

58.6.5.6 prepareModelフェーズ

prepareModelを処理するOracle ADFコンポーネント/コードは多重呼出し不変でなければなりません。prepareModelフェーズ中に実行されるコードは、基礎となるデータ/ビジネス・ロジックに影響することなく再実行可能でなければなりません。ポートレット環境で実行する場合、prepareModelは、一度コールされる通常のWebアプリケーション内での実行時とは異なり、完全なJSFライフ・サイクル中には二度コールされます。

この違いの理由は、Oracle JSF Portlet BridgeがJSFを1つのリクエストではなく2つのリクエストで実行することにあります。これは、すべてのJSFリクエストがレンダリング・フェーズ前にリダイレクトされるかのように実装されます。このアプローチでは、リクエストが最初に送信されるとき、およびレンダリングへのリクエストの受信時に再び送信されるときの両方で両方でJSF restoreViewフェーズがコールされることになります。

58.6.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.6.5.8 ページ・パラメータの参照

prepareModelフェーズで、ページ・パラメータを参照しないでください。この問題は、第58.6.5.7項「リクエスト・パラメータへのアクセス」でリクエスト・パラメータについて説明されている問題に関連します。一般的に、ページ・パラメータはリクエスト・パラメータに依存し、restoreViewフェーズ中に評価されます。このフェーズが、ポートレットのレンダリング中にもう一度コールされ、リクエスト・パラメータがないと、失敗に終わります。かわりに、JSFの実行フェーズからレンダリング・フェーズへの遷移の前に、ページ・パラメータ値に対する依存性をモデルに移動します。

58.6.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.6.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.6.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.6.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.6.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.7 実行時作成スキンのJSFポートレット・プロデューサ・アプリケーションへのコピー

WebCenter Portalアプリケーションでは、リソース・マネージャを使用して実行時にスキンを作成できます。これを実行すると、JSFポートレットを含むページ上にレンダリングの問題が発生する場合があります。これは、WebCenter Portalアプリケーションが使用するスキンが、タスク・フローをレンダリングするリモート・アプリケーションで使用できないためです。

この問題を是正するには、実行時に作成されたスキンを、タスク・フローがポートレット化されたときに作成されたポートレット・プロデューサ・アプリケーションにコピーする必要があります。

実行時作成スキンをポートレット・プロデューサ・アプリケーションにコピーするには:

1. スキンをFrameworkアプリケーションからEARファイルにエクスポートします。
方法の詳細は、第16.4.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仕様のアーキテクチャ

「図59-1 WSRP仕様のアーキテクチャ」の説明

JSR 286セキュリティの概念をWSRPで公開する方法は、第68.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で、ポートレットの作成先であるポートレット・プロデューサ・アプリケーションを開くか、新規ポートレット・プロデューサ・アプリケーションを作成します。
ポートレット・プロデューサ・アプリケーションの作成方法の詳細は、第5.5項「ポートレット・プロデューサ・アプリケーションの作成」を参照してください。

注意:

WebCenter Portal - ポートレット・プロデューサ・アプリケーション・テンプレートを使用せずに、ポートレット・プロデューサ・アプリケーションを作成する場合は、テクノロジ・スコープを構築する適切なポートレットをアプリケーションに手動で追加する必要があります。

WebCenter Portal - Frameworkアプリケーション・テンプレートを使用して構築されたアプリケーションは、ポートレット作成用にスコープ設定されていません。

2. ポートレットを作成するプロジェクト(たとえば、「ポートレット」)を右クリックして、「新規」を選択します。

3. 「新規ギャラリ」で「Web層」を開き、「ポートレット」、「規格に基づいたJavaポートレット(JSR 286)」の順に選択して、「OK」をクリックします。

ヒント:

プロジェクトにJSR 286ポートレットが含まれている場合は、次の方法でも新しいポートレットを作成できます。

- portlet.xmlを右クリックして、「ポートレットの追加」を選択します。

- portlet.xmlを開き、「設計」タブをクリックして、「ポートレット」タブの「追加」アイコンをクリックします。

4. JSR 286 Javaポートレットの作成ウィザードの「一般ポートレット情報」ページで、「名前」フィールドに入力されているデフォルト名を変更して、ポートレットの用途を適切に表すようにします。

5. 「クラス」フィールドに、ポートレットのクラスの名前を入力します。表示されているデフォルト名を受け入れることも、独自の名前を指定することもできます。新しい名前を入力する場合は、有効なJava名を使用する必要があります。

6. 「パッケージ」ドロップダウン・リストから、クラスを作成するパッケージを選択するか、パッケージの名前を入力します。
必要に応じて、「参照」ボタンをクリックして、プロジェクト内のパッケージを検索します。特定のパッケージを選択しないと、ウィザードではプロジェクトのデフォルト・パッケージが使用されます。

7. 「デフォルト言語」ドロップダウン・リストから、ポートレットでサポートするデフォルト言語を選択します。ウィザードでは、デフォルトで英語が使用されます。

8. ポートレットで「編集」モードをサポートするには、「ユーザーがポートレット・コンテンツを編集できるようにします」を選択します。ウィザードでは、このオプションがデフォルトで選択されています。
編集モードを使用すると、ユーザーは実行時にポートレットをパーソナライズできるようになります。詳細は、第57.4.1.2項「編集モード」を参照してください。

このオプションを選択すると、ポートレットの編集モードについて実装の詳細を後からウイザードで指定できるようになります。

9. 「次へ」をクリックします。

10. 「追加ポートレット情報」ページの「ポートレット・タイトル」フィールドに、ポートレットの説明的なタイトルを入力します。
ポートレット・タイトルは、「リソース・パレット」または「アプリケーション・リソース」パネルに表示されるため、ポートレットが便利かどうかどうかをユーザーが決定するのに役立つタイトルにしてください。ポートレットのタイトルは、ポートレットがページに表示されるとポートレットのヘッダーにも表示されます。

ヒント:

「表示名」、「短いタイトル」、「説明」、および「キーワード」の各属性は、WebCenter Portalには実装されていません。これらのフィールドに、値を入力する必要はありません。ただし、そのポートレットが別のアプリケーションで利用される可能性がある場合を除きます。

たとえば、Oracle Portalでは、ポートレット・リポジトリでポートレットの表示名を使用します。

11. ウィザードのこの時点で、「終了」をクリックし、残りのすべての設定にデフォルト値を使用することで、ポートレットをすぐに作成できます。
ポートレットにその他の詳細を指定するには、「次へ」をクリックし、残りの手順を実行します。

12. 「コンテンツ・タイプとポートレット・モード」ページの「コンテンツ・タイプとポートレット・モード」リストで、「表示」を選択します。

13. 「実装メソッド」セクションで、ポートレットに実装する表示モードを選択します(表示モードの詳細は、第57.4.1.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.1.2項「編集モード」を参照)。

15. ポートレットに別のポートレット・モードを実装するには:

1. 「コンテンツ・タイプとポートレット・モード」リストの該当するコンテンツ・タイプ(たとえば、text/html)で、既存のモード(たとえば、「表示」)を選択します。

2. 「追加」をクリックします。

3. 「ポートレット・モード」ダイアログで、「選択済」リストに必要なモードを1つ以上移動して、「OK」をクリックします。
「ポートレット・モード」ダイアログには、JSR 286でサポートされる標準のモードと、WebCenter Portalでサポートされる拡張モードが一覧表示されます。

詳細は、第57.4.1項「ポートレット・モード」を参照してください。

4. ポータル・モードをそれぞれ選択して、コンテンツのレンダリングに使用する実装メソッドを指定します。手順13を参照してください。

16. 新しいコンテンツ・タイプを追加するには:

1. 「コンテンツ・タイプとポートレット・モード」リストで、既存のコンテンツ・タイプ(たとえば、text/html)を選択します。

2. 「追加」をクリックします。

3. 「コンテンツ・タイプ」ダイアログで、「選択済」リストに必要なコンテンツ・タイプを移動して、「OK」をクリックします。

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.4項「ポートレット・パフォーマンス」および第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で生成されます。具体的には、次のファイルが作成されます。

- 2つのJavaクラス:

- portletName.javaは、ポートレット・コンテナから呼び出されます。このクラスには、ポートレット標準に必要なすべてのメソッドが含まれています。

- portletnameBundle.javaには、ポートレットのすべての翻訳文字列が含まれています。

- portlet.xmlは、アプリケーション用のポートレット・デプロイメント・ディスクリプタ・ファイルです。

- web.xml: アプリケーションのWebデプロイメント・ディスクリプタ・ファイルです。

- ポートレットに選択した各ポートレット・モード用のファイル:

- ポートレット・モードに「JSPの生成」を選択した場合は、そのモードに応じたJSPページ(たとえば、view.jsp.)が作成されます。

- 「ADF-Faces JSPXの生成」を選択した場合は、そのモードに応じたJSPXページ(たとえば、view.jspx)が作成されます。このページには、Facesコンポーネントを追加できます。

- 「パスへのマップ」を選択した場合は、追加のファイルは作成されません。ポートレット・モードに応じたコードは、既存のリソース内にあります。ポートレットのJavaクラスにコードが追加され、指定したターゲットにリクエストがルーティングされるようになります。

- 「カスタム・コード」選択した場合は、追加のファイルは作成されません。ただし、ポートレット・モードに応じたコードは、ポートレットのJavaクラス内にあります。

これらすべてのファイルは、アプリケーション・ナビゲータで確認できます。図59-2を参照してください。

図59-2 JSR 286 Javaポートレット用に生成されたファイル

「図59-2 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 Containers for J2EEセキュリティ・ガイド』のユーザー属性を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のポートレットのエクスポート操作を無効化します。このオプションは、後方互換のためにのみ用意されています。

有効な値は、次のとおりです。

- true - (デフォルト)ポートレットのエクスポートが許可されます。

- false - ポートレットのエクスポートは許可されません。

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ファイルをインポートする必要があるかどうかを指定します。

有効な値は、次のとおりです。

- true - (デフォルト)コンシューマからのCSSファイルがIFRAMEポートレットに適用されます。

- false - なにも実行されません。

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)のアプリケーション・セクションで宣言する必要があります。このように、アプリケーション・レベルで定義したパブリック・レンダラ・パラメータは、アプリケーション内のすべてのポートレットで使用できるようになります。

その後で、アプリケーション内の個別のポートレットでは、それらのパブリック・レンダラ・パラメータから使用する必要のあるものを指定できます。

パブリック・レンダラ・パラメータを後述するように宣言して定義すると、自動的にポートレット間通信が始まります。そのためのコーディングは必要ありません。詳細は、第62.6.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)のアプリケーション・セクションで宣言する必要があります。このように、アプリケーション・レベルで定義したポートレット・イベントは、アプリケーション内のすべてのポートレットで使用できるようになります。

その後で、アプリケーション内の個別のポートレットで、それらのポートレット・イベントから使用する必要のあるものを指定できます。ポートレットでは、受信を目的とする処理イベントというイベントと、ポートレットがトリガーする公開イベントというイベントを宣言できます。

ポートレット・イベントを後述するように宣言して定義すると、自動的にポートレット間通信が始まります。そのためのコーディングは必要ありません。詳細は、第62.6.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>
<description>This is my event</description>
<qname xmlns:x="http://example.com/events">myEvent</qname>
<value-type>java.lang.Integer</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="1234567890">
...
<supported-processing-event>
<name>myEvent</name>
</supported-processing-event>
...
</portlet>
...
<event-definition>
<description>This is my event</description>
<qname xmlns:x="http://example.com/events">myEvent</qname>
<value-type>java.lang.Integer</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="1234567890">
...
<supported-publishing-event>
<name>myEvent</name>
</supported-publishing-event>
...
</portlet>
...
<event-definition>
<description>This is my event</description>
<qname xmlns:x="http://example.com/events">myEvent</qname>
<value-type>java.lang.Integer</value-type>
</event-definition>
...
</portlet-app>

6. portlet.xmlファイルを保存します。
この時点で、このポートレット・イベントは、ポートレットのコード内で使用できるようになります。

59.3.6.4 例: ポートレット・イベント

次の例では、あるポートレットのアクションが同じページ上の別のポートレットに作用するために使用するポートレット・イベントの使用方法について説明しています。この例では、ある企業の様々なオフィスの地理的な場所を一覧表示する、部署の所在地ポートレットというポートレットを使用します。この例では、そのポートレットを別のポートレット(地図ポートレット)とリンクする方法を示します。地図ポートレットは、部署の所在地ポートレットで選択した場所のGoogleマップを表示します。

ヒント:

この項の例が含まれているZIPファイルは次の場所からダウンロードできます。

http://www.oracle.com/technetwork/middleware/webcenter/ps3-samples-176806.html

例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.4項「ポートレット・パフォーマンス」を参照してください。

この項には次のサブセクションが含まれます:

- 第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ポートレットのセキュリティ保護方法の詳細は、第68.17項「WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護」を参照してください。

59.3.13 JSR 286ポートレット用の永続ストアの管理方法

ポートレット永続ストアは、コンシューマ登録ハンドルおよびポートレット・プリファレンス・データを永続的に保持するために使用されます。ポートレット・プロデューサは、3種類の永続ストアのうちの1つを使用できます。

- Consumer - プロデューサのメタデータをコンシューマ・アプリケーションに関連付けます。このオプションをお薦めします。

- Database - リレーショナル・データベースを使用してデータを永続化します。これは、主に後方互換性を維持することを目的としていますが、大量のカスタマイズが見込まれる場合には有効です。

- File - ファイル・システムを使用してデータを永続化します。これは後方互換性の目的で提供されています。本番環境ではファイル・ベースの永続ストアは使用しないでください。この永続ストアでは、多層化環境や高可用性環境がサポートされません。

詳細は、第57.4.3項「ポートレットのパーソナライズとカスタマイズ」を参照してください。

この項には次のサブセクションが含まれます:

- 第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ユーティリティを実行するときには、クラスパスで次のライブラリを参照する必要があります。

- portlet-producer-container-persistence.jar

- portlet-producer-container-common.jar

- adf-share-base.jar

- portlet-utils.jar

- wcs-producer-spi.jar

- adflogginghandler.jar

- ojdbc6.jar

クラスパスで参照されるojdbc6.jarライブラリは、データベースで使用されるライブラリと同じにする必要があります。

データベースまたはファイルベースの永続ストアを移行するには:

1. 次に示すように、適切なライブラリがクラスパスで参照されていることを確認します。

./java  -classpath
ORACLE_COMMON_HOME/webcenter/modules/oracle.webcenter.framework_11.1.1/portlet-producer-container-persistence.jar:
ORACLE_COMMON_HOME/webcenter/modules/oracle.webcenter.framework_11.1.1/portlet-producer-container-common.jar:
ORACLE_COMMON_HOME/modules/oracle.adf.share.ca_11.1.1/adf-share-base.jar:
ORACLE_COMMON_HOME/webcenter/modules/oracle.portlet.server_11.1.1/portlet-utils.jar:
ORACLE_COMMON_HOME/webcenter/modules/com.bea.wsrp_10.3.2.0/system/wcs-producer-spi.jar:
ORACLE_COMMON_HOME/modules/oracle.adf.share_11.1.1/adflogginghandler.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/oracle.webcenter.framework_11.1.1/portlet-producer-container-persistence.jar:
ORACLE_COMMON_HOME/webcenter/modules/oracle.webcenter.framework_11.1.1/portlet-producer-container-common.jar:
ORACLE_COMMON_HOME/modules/oracle.adf.share.ca_11.1.1/adf-share-base.jar:
ORACLE_COMMON_HOME/webcenter/modules/oracle.portlet.server_11.1.1/portlet-utils.jar:
ORACLE_COMMON_HOME/webcenter/modules/com.bea.wsrp_10.3.2.0/system/wcs-producer-spi.jar:
ORACLE_COMMON_HOME/modules/oracle.adf.share_11.1.1/adflogginghandler.jar:
DB_ORACLE_HOME/jdbc/lib/ojdbc6.jar
oracle.portlet.server.containerimpl.PersistenceMigrationTool
-sourceType file \
-sourceRoot /data/prefs
-destType db \
-destUsername scott \
-destPassword tiger \
-destDatabase abc.mycompany.com:1521:yourdatabase \

ここで:

- ORACLE_COMMON_HOMEは、Oracle共通ホームです

- DB_ORACLE_HOMEは、データベースのOracleホームです(WebCenter Portal Oracleホームと同じマシン上にある場合)。データベースのOracleホームが別のマシンにある場合は、DB_ORACLE_HOME/jdbc/libディレクトリを、WebCenter Portal Oracleホームの一時ディレクトリにコピーします。クラスパスでは、この一時ディレクトリのojdbc6.jarライブラリを参照する必要があります。

59.3.13.2.2 コンシューマ永続ストアの移行

ポートレット・プロデューサを別のサーバーに移動したときには、そのプロデューサの永続ストアも移動する必要があります。

新しいプロデューサをインストールした後で、次に示すように永続ストアを移動します。

- コンシューマ永続ストア - データはコンシューマに保存されるため、永続ストアを移動するための要件はありません。

- データベース永続ストア: 次のいずれかを実行します。

- WebLogic Serverのデータ・ソースが元のプロデューサと同じデータベースを参照するように、新しいプロデューサを構成します。

- 永続ストア移行ユーティリティを使用して、永続ストアを移行します(詳細は、第59.3.13.2項「WSRPプロデューサの永続ストアの移行」を参照)。

- ファイル永続ストア: 次のいずれかを実行します。

- 元のプロデューサと同じファイル・システムの場所を参照するように、新しいプロデューサを構成します。

- 永続ストア移行ユーティリティを使用して、永続ストアを移行します(詳細は、第59.3.13.2項「WSRPプロデューサの永続ストアの移行」を参照)。

最後に、Enterprise Manager Fusion Middleware ControlまたはWLSTのコマンド(setWSRPProducerRegistrationまたはsetPDKJavaProducerRegistration)を使用して、プロデューサ登録のURLを更新します。

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管理者ガイド』のポートレット・クライアント・メタデータのエクスポート(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-3のようなテスト・ページが表示されます。

図59-3 WSRPプロデューサ・テスト・ページ

「図59-3 WSRPプロデューサ・テスト・ページ」の説明

6. アプリケーションの実行中に、JDeveloperとブラウザを切り替え、アプリケーションを設計時に変更してその変更を保存し、ブラウザでテスト・ページをリフレッシュできます。

7. プロデューサが正常に実行されたときには、そのプロデューサをアプリケーションに登録し、1つ以上のポートレットをページに追加して、正常に動作することを確認してください。プロデューサを登録することにより、そのプロデューサを探し、通信するために必要な情報をアプリケーションに提供します。プロデューサを登録すると、接続として表示され、プロデューサとそのポートレットは「アプリケーション・リソース」パネルの「接続」ノードまたは「リソース」パレットで使用できるようになります。
JSR 286ポートレットのプロデューサを登録する場合は、第62.2.1項「WSRPポートレット・プロデューサの登録方法」で説明する手順を実行してください。

ポートレットをページに追加するには、第62.6項「ページへのポートレットの追加」の手順に従います。

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.2項「WARデプロイメント・プロファイルの作成」を参照してください)。アプリケーションを統合WLSにデプロイすると、「デプロイメント構成」ダイアログが表示され、デプロイメント設定の構成およびカスタマイズができます。JDeveloperで事前作成されたファイル・システムMDSリポジトリが、「リポジトリ名」フィールドに表示されます。

統合WLSでのアプリケーションのデプロイおよび実行の詳細は、第69.2項「統合WebLogic ServerへのFrameworkアプリケーションのデプロイ」を参照してください。

59.4.4 ポートレットのパーソナライズのテスト

ポートレットにパーソナライズを実装していると、認証されたユーザーのポートレットにのみ「パーソナライズ」アイコンが表示されます。そのため、ポートレットのパーソナライズをテストするには、ポートレットを利用するアプリケーションに、なんらかの形のセキュリティを実装することが必要になります。テストのためには、最も基本的な認証を構成すれば済みます。詳細は、第68.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環境に移行する方法について説明します。

注意:

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のWebCenter Frameworkとの相互運用に関する項を参照してください。

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: Spacesユーザーズ・ガイド』のコンテンツ・プレゼンタを使用したコンテンツの公開に関する項を参照してください。

- リモート(WSRP)ポートレット: WLPで利用されるリモート(WSRP)ポートレットは、かわりにWebCenter Portalのコンシューマで利用されます。WLP固有のWSRP機能を利用するリモート・ポートレットには、変更が必要になることがあります。たとえば、カスタムのデータ・転送機能は、データを伝達するためのイベントまたは共有パラメータを使用して置き換える必要があります。Oracle Fusion Middleware Oracle WebLogic Portalフェデレーテッド・ポータル・ガイドのWSRPのWebCenter Frameworkとの相互運用に関する項と、WLPとWebCenter 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のFrameworkアプリケーション・テンプレートを使用して作成されているため、そのアプリケーションはポートレットの作成用にスコープ設定されていません。

解決方法

1. ポートレット・プロデューサ・アプリケーションまたはポートレット作成用にスコープ設定されているアプリケーション(WebCenter 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ポートレットのテストに関する問題

ポートレット開発のテスト段階でポートレットを利用するときに発生する可能性のある問題の一覧は、第62.12項「ポートレットのトラブルシューティング」を参照してください。

60 Oracle PDK-Javaを使用したJavaポートレットの構築

この章では、Oracle PDK-Javaを使用したJavaポートレットの構築方法について説明します。Oracle PDK-Javaは、Javaポートレットを構築するためのOracle独自のテクノロジです。

ヒント:

新規Javaポートレットを構築するには、JSR 286規格の使用を検討する必要があります。詳細は、第59章「JSR 286を使用した標準ベースのJavaポートレットの作成」を参照してください。

この章には次の項が含まれます:

- 第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ポートレットのトラブルシューティング」

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(関数)を定義します。プロデューサ・アダプタは、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リクエストの共通関数を実装し、プロデューサを構成するための宣言メカニズムを提供することで、プロデューサの開発を簡略化します。プロデューサ・ランタイムを使用すると、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で、ポートレットの作成先であるポートレット・プロデューサ・アプリケーションを開くか、新規ポートレット・プロデューサ・アプリケーションを作成します。
ポートレット・プロデューサ・アプリケーションの作成方法の詳細は、第5.5項「ポートレット・プロデューサ・アプリケーションの作成」を参照してください。

注意:

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. 「一般ポートレット情報」ページで、ポートレットの名前および表示名を入力します。

この名前は内部的に使用され、ユーザーには公開されません。表示名は、コンポーネント・パレットなどのポートレット選択リストでユーザーに対して表示されます。

この説明は、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.1.1項「表示モード」を参照してください。

12. ポートレットに全画面モードを実装するには、「詳細ページの表示」を選択し、手順11の共有画面モードの説明に従って、実装スタイルを選択します。

13. ウィザードのこの時点で、「終了」をクリックし、残りのすべての設定にデフォルト値を使用することで、ポートレットをすぐに作成できます。
ポートレットにその他の詳細を指定するには、「次へ」をクリックし、残りの手順を実行します。

14. 「カスタマイズ・モード」ページの「ページの編集」は、デフォルトで選択されています。ポートレットに編集モードを実装するには、手順11の共有画面モードの説明に従って、実装スタイルを選択します。編集モードを実装しない場合は、「ページの編集」を選択解除します。
編集モードの詳細は、第57.4.1.2項「編集モード」を参照してください。

15. ポートレットにデフォルト編集モードを実装するには、「デフォルト・ページの編集」を選択し、手順11の共有画面モードの説明に従って、実装スタイルを選択します。
デフォルト編集モードの詳細は、第57.4.1.3項「デフォルト編集モード」を参照してください。

16. 「次へ」をクリックします。

17. 「追加モード」ページで、ポートレットにヘルプ・モードを実装するには、「ヘルプ・ページ」を選択し、手順11の共有画面モードの説明に従って、実装スタイルを選択します。
ヘルプ・モードの詳細は、第57.4.1.4項「ヘルプ・モード」を参照してください。

18. ポートレットに情報モードを実装するには、「ページ情報」を選択し、手順11の共有画面モードの説明に従って、実装スタイルを選択します。
情報モードの詳細は、第57.4.1.5項「情報モード」を参照してください。

19. 「次へ」をクリックします。

20. 「パブリック・ポートレット・パラメータ」ページで、「追加」をクリックし、パブリック・パラメータをポートレットに追加します。
パラメータの表に新しい行が追加されます。行の各フィールドをダブルクリックして、パラメータの名前、表示名および説明を入力します。

さらにパブリック・パラメータを追加するには、この手順を繰り返します。完了したら、「次へ」をクリックします。

パブリック・ポートレット・パラメータにより、ポートレットは、格納されているページやそのページの他のポートレットと通信できるようになります。詳細は、第60.3.3項「パブリック・パラメータの実装方法」を参照してください。

21. 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-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.8.2項「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. Frameworkアプリケーションに、プロデューサを登録します。詳細は、第62.3項「WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

13. 2つのポートレットをアプリケーションのページに追加します。詳細は、第62.6項「ページへのポートレットの追加」を参照してください。

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のフォームは非常に役に立ちます。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/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. プロデューサをセッション・サポートに登録します。ポートレットの登録方法の詳細は、第62.3項「WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

5. Javaポートレットをページに追加していない場合は、ここで追加します。次のタスクを実行します。

- プロデューサをリフレッシュして新しい変更内容を反映させます。

- セッションがすでに無効の場合は、再度ログインします。

60.3.7 キャッシュを使用してPDK-Javaポートレットのパフォーマンスを向上させる方法

ポートレットの基本機能の設定が完了した後は、ポートレットのパフォーマンスに注目する必要があります。

キャッシュは、高度な動的コンテンツを含むWebサイトのパフォーマンスの向上に使用される一般的な手法です。JSR 286ポートレットでは、有効期限ベースおよび有効化ベースのキャッシュがサポートされています。

キャッシュの詳細は、第57.4.4項「ポートレット・パフォーマンス」を参照してください。

この項には次のサブセクションが含まれます:

- 第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.3項「ポートレットのパーソナライズとカスタマイズ」を参照してください。

この項には次のサブセクションが含まれます:

- 第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\jdeveloper\modules\oracle.dms_11.1.1\dms.jar;
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)では、ポートレットを短時間で簡単にテストする方法を提供しています。統合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 - ログ

「図60-2 DefaultServer - ログ」の説明

5. PDK-Javaアプリケーション・テスト・ページは、ブラウザ・ウィンドウで表示されます(図60-3)。

図60-3 ポートレット・プロデューサ・アプリケーション・テスト・ページ

「図60-3 ポートレット・プロデューサ・アプリケーション・テスト・ページ」の説明

6. 「サービス名」の下にあるリンクをクリックします。ブラウザが開き、図60-4に示すようなページが表示されます。このページのURLは、プロデューサを別のアプリケーションに登録する際に必要です。

図60-4 プロデューサ・テスト・ページ

「図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ポートレットのプロデューサを登録するには、第62.3項「WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」の手順に従います。

ポートレットをページに追加するには、第62.6項「ページへのポートレットの追加」の手順に従います。

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.2項「WARデプロイメント・プロファイルの作成」を参照してください)。アプリケーションを統合WLSにデプロイすると、「デプロイメント構成」ダイアログが表示され、デプロイメント設定の構成およびカスタマイズができます。JDeveloperで事前作成されたファイル・システムMDSリポジトリが、「リポジトリ名」フィールドに表示されます。

統合WLSでのアプリケーションのデプロイおよび実行の詳細は、第69.2項「統合WebLogic ServerへのFrameworkアプリケーションのデプロイ」を参照してください。

60.4.4 ポートレット・パーソナライズのテスト方法

ポートレットのパーソナライズを実装した場合、「パーソナライズ」リンクは、認証されたユーザーのポートレットにのみ表示されます。そのため、ポートレットのパーソナライズ(「パーソナライズ」リンク)をテストするには、ポートレットを使用するアプリケーションに対して、なんらかのセキュリティを実装しておく必要があります。テストのためには、最も基本的な認証を構成すれば済みます。詳細は、第68.12項「ポートレット・パーソナライズをテストするための基本認証の構成」を参照してください。

60.5 PDK-Javaポートレットのデプロイ

ポートレット・プロデューサは、WebCenter Portalポートレット・プロデューサをサポートするために構成されているWebLogic管理対象サーバーにデプロイできます。デプロイの前に完了する必要がある前提条件のリストは、第61.1項「ポートレット・プロデューサのデプロイの概要」を参照してください。

PDK-Javaポートレット・プロデューサをデプロイするための最初の手順は、プロデューサとその関連付けられたファイルをパッケージ化する方法を示すWARデプロイメント・プロファイルを作成することです。詳細は、第61.2項「WARデプロイメント・プロファイルの作成」を参照してください。

PDK-JavaポートレットのみをEARファイルとしてデプロイするには、WARデプロイメント・プロファイルの作成後、アプリケーション全体をパッケージ化するEARデプロイメント・プロファイルも作成する必要があります。詳細は、第69.3.2.2項「デプロイメント・プロファイルの作成」を参照してください。

注意:

EARデプロイメント・プロファイルを作成する際には、WARファイルがアプリケーションのEARファイルに含まれていることを確認します。

EARデプロイメント・プロファイルを作成すると、ポートレット・プロデューサを管理対象サーバーにデプロイできます。詳細は、第61.3項「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-5 Blogの送信」の説明

図60-6 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ポートレットの登録方法の詳細は、第62.3項「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のFrameworkアプリケーション・テンプレートを使用して構築されているため、ポートレット作成用にスコープ設定されていません。

解決方法

1. ポートレット・プロデューサ・アプリケーションまたはポートレット作成用にスコープ設定されているアプリケーション(WebCenter 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項「WARデプロイメント・プロファイルの作成」

- 第61.3項「WebLogic管理対象サーバーへのポートレット・プロデューサのデプロイ」

Fusion Middleware Control、Oracle WebLogic Server管理コンソールまたはWLSTを使用してプロデューサをデプロイする方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のポートレット・プロデューサ・アプリケーションのデプロイに関する項を参照してください。

アプリケーションのデプロイに関する一般的な情報は、第69章「WebCenter Portal: Frameworkアプリケーションのデプロイおよびテスト」を参照してください。

61.1 ポートレット・プロデューサのデプロイの概要

ポートレット・プロデューサは、WebCenter Portalポートレット・プロデューサをサポートするために構成されているOracle WebLogic管理対象サーバーにデプロイできます。

ポートレット・プロデューサをWebLogic管理対象サーバーにデプロイする前に、次に示す手順を完了する必要があります。

1. 必要な共有ライブラリがすべて含まれているWebLogic管理対象サーバー・インスタンスを作成し、プロビジョニングします。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の管理対象サーバーの作成に関する項を参照してください。

2. JDeveloperの外部にあるインスタンスに対してWebLogic管理対象サーバー接続を作成します。詳細は、第69.3.3.4項「WebLogic管理対象サーバー接続の作成」を参照してください。

ポートレット・プロデューサをWebLogic管理対象サーバーにデプロイするには、最初にアプリケーションWARデプロイメント・プロファイルを作成する必要があります。

注意:

「ADFセキュリティの構成」ウィザードで自動付与機能を有効にした場合は、ポートレット・プロデューサをデプロイする前にtest-allアプリケーション・ロールを削除する必要があります。test-allロールによってすべてのADFリソースが公開されるため、このロールが存在していると、アプリケーションのリソースが保護されない状態になるリスクが高まります。したがって、アプリケーションレベルのポリシー・ストアを移行する前にこのロールを削除する必要があります。

詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のtest-allロールをアプリケーション・ポリシー・ストアから削除する方法に関する項を参照してください。

61.2 WARデプロイメント・プロファイルの作成

ポートレット・プロデューサをJDeveloperの外部にある管理対象サーバーにデプロイするには、プロデューサとその関連付けられたファイルのパッケージ化の方法を示すデプロイメント・プロファイルを作成する必要があります。そのためには、Webアプリケーション・アーカイブ(WAR)ファイルを作成する必要があります。

WARデプロイメント・プロファイルを作成するには:

1. 「アプリケーション・ナビゲータ」で、プロジェクト・フォルダ(「ポートレット」など)を右クリックし、「新規」を選択します。

2. 「新規ギャラリ」で、「一般」を開き、「デプロイメント・プロファイル」、「WARファイル」の順に選択して、「OK」をクリックします。

3. 「デプロイメント・プロファイルの作成 -- WARファイル」ダイアログで、デプロイメント・プロファイルの名前を入力し、「OK」をクリックします。

4. 「WARデプロイメント・プロファイルのプロパティの編集」ダイアログで、「Java EE Webコンテキスト・ルートを指定」を選択してコンテキスト・ルートを入力し、「OK」をクリックします。

5. 「プロジェクト・プロパティ」ダイアログの「デプロイメント・プロファイル」で、作成したWARファイルを選択し、「OK」をクリックします。

61.3 WebLogic管理対象サーバーへのポートレット・プロデューサのデプロイ

デプロイメント・プロファイルおよびデプロイメント・ディスクリプタを作成すると、ポートレット・プロデューサを管理対象サーバーにデプロイできます。

ポートレット・プロデューサをWebLogic管理対象サーバーにデプロイするには:

1. 「アプリケーション・ナビゲータ」で、プロジェクト・フォルダ(「ポートレット」など)を右クリックして「デプロイ」を選択し、第61.2項「WARデプロイメント・プロファイルの作成」で作成したデプロイメント・プロファイル(WARファイル)を選択します。

2. 「デプロイ」ダイアログの「デプロイメント・アクション」ページで、「アプリケーション・サーバーへのデプロイ」を選択し、「次へ」をクリックします。

3. 「サーバーの選択」ページで、管理対象サーバーへの接続を選択し、「次へ」をクリックします。

4. 「WebLogicオプション」ページで、管理対象サーバー(WLS_Portletなど)を選択し、「終了」をクリックします。

5. アプリケーションにJSR 286ポートレットが含まれている場合は、「デプロイメント・タイプの選択」ダイアログが表示されます。このアプリケーションをWSRPサービスとして公開するには、「はい」をクリックし、必要な構成を追加します。

6. 「デプロイ」をクリックします。
「デプロイメント - ログ」ウィンドウに、Deployment startedというメッセージが表示されます。アプリケーションがターゲット・サーバー・インスタンスに正常にデプロイされると、ログにDeployment finishedというメッセージが表示されます。

注意:

ポートレット・プロデューサをクラスタ環境にデプロイしている場合は、次の警告が表示されます。

WARNING:  oracle.webcenter.lifecycle.exception.LifecycleLockedException: A lock exists that prevents export set import.

これは想定されている動作です。アプリケーションをデプロイする場合、EARファイルにエクスポートされたプロデューサ・メタデータ(MARファイルと同様)を、本番環境で使用するMDSスキーマにインポートする必要があります。デプロイメント中に、メタデータは自動的にインポートされます。このインポートは、クラスタの1つのノードでのみ実行する必要があります。そのため、クラスタの他のノードが同じ操作を実行するのを防ぐためにロックが発生します。

62 ポートレットの消費

この章では、WebCenter Portal: Frameworkアプリケーションのページにポートレットを追加する方法およびそのプロセスに伴うオプションについて説明します。

この章には次の項が含まれます:

- 第62.1項「ポートレットの消費の概要」

- 第62.2項「WebCenter Portal: FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録」

- 第62.3項「WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」

- 第62.4項「ポートレット・プロデューサの接続の管理」

- 第62.5項「ポートレット・プロデューサ・タスク・フローの追加」

- 62.6項「ページへのポートレットの追加」

- 第62.7項「ポートレット・タグの属性値の設定」

- 第62.8項「JSR 286ポートレットでのパラメータとイベントの手動によるワイヤリング」

- 第62.9項「ポートレットのコピー」

- 62.10項「アプリケーション・ページからのポートレットの削除」

- 第62.11項「WebCenterサービス・ポートレットの消費」

- 第62.12項「ポートレットのトラブルシューティング」

この章では、Oracle JDeveloperまたはOracle ADFページの特性の基本については説明しません。Frameworkアプリケーション・ページに固有のページ作成に関してのみ説明します。したがって、この章をお読みになる前に、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』の内容に精通しておいてください。

Frameworkアプリケーション・ページで消費可能なポートレットの作成の詳細は、次に示す章を参照してください。

- 第57章「ポートレットの概要」

- 第58章「Oracle JSF Portlet Bridgeを使用したJSFアプリケーションからのポートレットの作成」

- 第59章「 JSR 286を使用した標準ベースのJavaポートレットの構築」

62.1 ポートレットの消費の概要

Oracle WebCenter Frameworkでは、ポートレット・プロデューサをアプリケーションに登録することにより、ポートレットを消費できます。アプリケーションでは、(パッケージ・アプリケーションのベンダーなどの)サード・パーティから入手したポートレットおよび自分で構築したポートレットを消費できます。

ポートレット・プロデューサは、次の2つの方法で登録できます。

- 特定のアプリケーションにポートレット・プロデューサを登録します。このオプションは、他のアプリケーションにそのプロデューサを登録する可能性がない場合に使用します。

- 「リソース・パレット」を使用してポートレット・プロデューサを登録します。このオプションは、複数のアプリケーションにそのプロデューサのポートレットを使用する場合に使用します。

「リソース・パレット」で使用可能なポートレットは、他のコンポーネントの場合と同様にそれをページ上にドロップすることで、任意のFrameworkアプリケーションに追加できます。「リソース・パレット」からポートレットを追加すると、そのプロデューサがアプリケーションにまだ登録されていない場合は、そのプロデューサがアプリケーションに登録されます。アプリケーション・ナビゲータの「アプリケーション・リソース」パネルに、「リソース・パレット」からプロデューサ接続全体をドラッグ・アンド・ドロップすることもできます。これにより、プロデューサがアプリケーションに登録されます。かわりに、「リソース・パレット」でプロデューサを右クリックし、ポップアップ・メニューから「アプリケーションに追加」を選択して、現在開いているアプリケーションにプロデューサを登録できます。

JDeveloperは、WSRPプロデューサとOracle PDK-Javaプロデューサの両方を登録するためのウィザードを備えています。

注意:

アプリケーションがソース・コントロールされている場合、プロデューサの登録中に作成されたすべての新しいファイルに対してソース・コントロール・システムに要素を手動で作成する必要があります。すでにソース・コントロールされているファイルはすべて、プロデューサ登録プロセスによって自動的にチェックアウトされます。

ポートレットの消費に関連するオプションは数多くあります。たとえば、ポートレットをページに直接配置するか、コンポーザ・コンポーネント内にそれらをネストするかを選択できます。また、ポートレット・タグの多くの属性は調整でき、複数のポートレットを互いに連結することもできます。

62.2 WebCenter Portal: FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録

WSRPポートレット・プロデューサを登録する場合、プロデューサの操作パラメータを指定する基本情報を設定します。ポートレットを消費するアプリケーションは、プロデューサと通信したり、プロデューサを介してポートレットと通信するときに、この情報を使用します。

WebCenter Portal: Frameworkでは、WSRP 1.0とWSRP 2.0の両方のプロデューサがサポートされています。WSRP 2.0標準では特に、ポートレット間の通信およびポートレット・カスタマイズのエクスポートおよびインポートがサポートされます。標準ベースのJSR 286ポートレットを構築しながら、WSRP 2.0のメリットを活用できます。

この項には次のサブセクションが含まれます:

- 第62.2.1項「WSRPポートレット・プロデューサの登録方法」

- 第62.2.2項「アプリケーションの定義済Java EEセキュリティ・ロールに対するプロデューサの宣言済ユーザー・カテゴリのマップ方法」

62.2.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プロデューサ」を選択します。
「リソース・パレット」からの起動など、ウィザードを起動するその他の方法については、第1.6.2項「接続ウィザードにアクセスする方法」を参照してください。

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ポートレット・プロデューサの登録」ダイアログが表示されます。「はい」をクリックして、第62.2.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. 「デフォルト・ユーザー」フィールドに、ユーザーがFrameworkアプリケーションに対して認証されていないときにリモート・プロデューサにアサートするユーザー名を入力します。
認証されていない場合は、anonymousというアイデンティティがアプリケーション・ユーザーに関連付けられます。OWSMでは、現時点では匿名アイデンティティの伝播はサポートされていないため、ここではかわりのアイデンティティを指定する必要があります。ただし、この場合は、Frameworkアプリケーションがユーザーを認証していないため、指定するデフォルト・ユーザーはリモート・プロデューサで、権限の低いユーザー(パブリック・コンテンツの表示に使用するのに適したアイデンティティ)になることに注意してください。たとえば、この目的でアイデンティティ・ストアにゲスト・アカウントを作成できます。ユーザーがアプリケーションで認証されている場合、デフォルト・ユーザーではなくそのユーザーのアイデンティティがアサートされます。

注意:

「デフォルト・ユーザー」を指定する場合、この情報を受け入れるようにリモート・プロデューサを設定する必要があります。

「ユーザー名トークン(パスワードあり)」を選択した場合、「デフォルト・ユーザー」ディレクトリは表示されません。

13. 「発行者名」フィールドに、SAMLトークンの発行者名(www.oracle.comなど)を入力します。
このフィールドは、「トークン・プロファイル」ドロップダウン・リストから「SAMLトークン」オプションを選択し、「構成」オプションから「カスタム」を選択した場合にのみ表示されます。発行者名は、サブジェクトの検証を保証する証明エンティティです。

14. このプロデューサが外部アプリケーションに対する認証を提供する必要がある場合は、「プロデューサと外部アプリケーションとの関連付け」を選択し、アプリケーションを選択します。
詳細は、第68.13.3項「外部アプリケーションの管理」を参照してください。

このオプションは、「ユーザー名トークン(パスワードあり)」を選択した場合にのみ使用できます。

15. 「次へ」をクリックします。
構成オプションとして「デフォルト」を選択した場合、「キーストアの指定」ページのフィールドは無効化されます。「終了」をクリックして、登録を完了します。

プロデューサがユーザー・カテゴリを宣言する場合は、「終了」をクリックすると、「WSRPポートレット・プロデューサの登録」ダイアログが表示されます。「はい」をクリックして、第62.2.2項「アプリケーションの定義済Java EEセキュリティ・ロールに対するプロデューサの宣言済ユーザー・カテゴリのマップ方法」を参照してください。この機会を拒否して登録プロセスを完了するには、「いいえ」をクリックします。

16. 「キーストアの指定」ページの「ストア・パス」フィールドに、SOAPメッセージの一部(セキュリティ・トークンとSOAPメッセージ本体)を署名するために使用される証明書および秘密鍵が含まれるキーストアのフルパスを入力します。
フルパスがわからない場合は、「参照」をクリックして、そのファイルに移動して選択します。選択するファイルは、Java keytoolで作成されたキーストアです。

17. 「ストア・パスワード」フィールドで、キーストアを作成したときに設定したパスワードを指定します。
キーストア・パスワードは、移入先の「ストア・タイプ」フィールドおよび「署名鍵の別名」ドロップダウン・リストに対して正確である必要があります。

間違ったキーストア・パスまたはパスワードを入力すると、パスワードは無効で修正する必要があるというエラー・メッセージが表示されます。適切な値を指定するまで、この画面上の「ストア・パス」および「ストア・パスワード」以外のすべてのフィールドは無効になっています。

18. 適切なキーストア・パスおよびパスワードを指定した後、[Tab]キーを押すと、別のなアクティブなフィールド(たとえば、「ストア・パス」フィールド)に移動します。「ストア・タイプ」フィールドおよび「署名鍵の別名」ドロップダウン・リストに適切に移入されていることを確認します。

19. 「ストア・タイプ」の値はキーストアから読み取られ、常に編集不可能です。ストア・タイプは常にJKS (Java Key Store)です。

20. 「署名キーの別名」ドロップダウン・リストから、署名キーの別名を選択します。
「ストア・パスワード」フィールドに適切なパスワードを入力すると、リストに自動的に移入されます。「署名鍵の別名」は、署名に使用される秘密鍵に関連付けられている証明書の識別子です。指定されたキーストアで見つかったキーの別名は、リストで選択可能になります。署名に使用するキーの別名を選択してください。

21. 「署名鍵のパスワード」フィールドで、「署名鍵の別名」に指定した別名によって識別されるキーにアクセスするためのパスワードを指定します。

22. オプションで、「暗号化鍵の別名」ドロップダウン・リストから、暗号化鍵の別名を選択します。
「ストア・パスワード」フィールドに適切なパスワードを入力すると、リストに自動的に移入されます。指定されたキーストアで見つかったキーの別名は、リストで選択可能になります。暗号化に使用するものを選択します。

23. オプションで、「暗号化鍵のパスワード」フィールドで、「暗号化鍵の別名」に指定した別名によって識別されるキーにアクセスするためのパスワードを指定します。

24. 「受信者の別名」フィールドから、プロデューサの証明書と関連付けられたキーストア別名を選択し、「終了」をクリックします。
この資格証明は、プロデューサへのメッセージの暗号化に使用します。

このフィールドは、ウィザードの「セキュリティ属性の構成」ページで「メッセージ整合性付きSAMLトークン」を「トークン・プロファイル」として選択した場合は表示されません。

プロデューサがユーザー・カテゴリを宣言する場合は、「終了」をクリックすると、そのユーザー・カテゴリをJava EEロールにマップするかどうかを尋ねるダイアログが表示されます。「はい」をクリックして、第62.2.2項「アプリケーションの定義済Java EEセキュリティ・ロールに対するプロデューサの宣言済ユーザー・カテゴリのマップ方法」を参照してください。この機会を拒否して登録プロセスを完了するには、「いいえ」をクリックします。

62.2.2 アプリケーションの定義済Java EEセキュリティ・ロールに対するプロデューサの宣言済ユーザー・カテゴリのマップ方法

プロデューサで宣言するユーザー・カテゴリは、プロデューサに含まれるポートレットから導出されます。たとえば、規格に基づいたJavaポートレット(JSR 286)ウィザードで作成された1つ以上のJSR 286ポートレットがプロデューサに含まれる場合、ポートレット作成中に追加されたセキュリティ・ロールはすべて、プロデューサで宣言するユーザー・カテゴリに含められます。Java EEセキュリティ・ロールは、Frameworkアプリケーションのweb.xmlファイルのプロパティを介して指定できます。

JSR 286ポートレットでのセキュリティ・ロールの詳細は、第68.17項「WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護」を参照してください。

この手順は、第62.2.1項「WSRPポートレット・プロデューサの登録方法」から続いています。

アプリケーション定義のJava EEセキュリティ・ロールでプロデューサが宣言したユーザー・カテゴリをマップするには:

1. WSRPポートレット・プロデューサの登録ウィザードで「終了」をクリックした後、その結果のダイアログで「はい」をクリックします。

2. 「ユーザー・カテゴリ」ダイアログで、「ユーザー・カテゴリ」ごとに、「J2EEセキュリティ・ロール」列の対応するフィールドをクリックします。
プロデューサ登録設定を編集するときは、「ユーザー・カテゴリ」ダイアログにもアクセスできます。詳細は、第62.4.1項「ポートレット・プロデューサ登録設定の編集」を参照してください。

3. 表示されるリストから、プロデューサのユーザー・カテゴリにマップするセキュリティ・ロールを選択します。

4. すべてのユーザー・カテゴリがマップされたら、「OK」をクリックします。

62.3 WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録

PDK-Javaポートレット・プロデューサを登録する場合、プロデューサの操作パラメータを指定する基本情報を設定します。ポートレットを消費するアプリケーションは、プロデューサと通信したり、プロデューサを介してポートレットと通信するときに、この情報を使用します。

登録に成功すると、接続を作成した場所に応じて、新しく登録されたプロデューサがJDeveloperでアプリケーション・ナビゲータの「アプリケーション・リソース」パネルか、「リソース・パレット」に表示されます。その後、プロデューサからポートレットを選択してアプリケーション(.jspx)ページに配置できます。

注意:

Oracle PDK-Javaポートレット・プロデューサの登録ウィザードで、「終了」をクリックした後に「取消」をクリックしてもその登録は取り消されません。

PDK-Javaポートレット・プロデューサを登録するには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルで、「接続」を右クリックし、「接続の作成」→「Oracle PDK-Javaプロデューサ」を選択します。
「リソース・パレット」などウィザードを起動するその他の方法は、第1.6.2項「接続ウィザードにアクセスする方法」を参照してください。

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. このプロデューサが外部アプリケーションに対する認証を提供する必要がある場合は、「プロデューサと外部アプリケーションとの関連付け」を選択し、アプリケーションを選択します。
詳細は、第68.13.3項「外部アプリケーションの管理」を参照してください。

外部アプリケーションは個々のアプリケーションにスコープ設定されているため、このオプションは、アプリケーション・ナビゲータからウィザードを起動する場合にのみ使用できます。

9. 「プロデューサ・セッションの有効化」を選択して、プロデューサと消費するアプリケーションとの間のセッションを有効化します。
セッションが有効化されると、サーバーは、ユーザー名などのセッション固有の情報をメンテナンスします。メッセージ認証ではセッションが使用されるため、共有キーが設定されている場合は、このオプションも選択する必要があります。

プロデューサとサーバー間がセッションレス通信である場合は、このオプションを選択解除してください。

10. ウィザードのこの時点で、「終了」をクリックして登録を終了し、残りのすべての手順にデフォルト値を使用できます。
追加の詳細を指定するには、「次」をクリックし、残りの手順を続行します。

11. 「追加の詳細の指定」ページの「デフォルト・タイムアウト間隔」(秒単位)フィールドに、デザインタイム操作中にプロデューサのレスポンスがあるまで待機する秒数を入力します。

12. 「サブスクライバID」フィールドに、登録するプロデューサのコンシューマを識別する文字列を入力します。
プロデューサが登録されると、プロデューサのコールが送信されます。コール中、コンシューマは「サブスクライバID」の値をプロデューサに渡します。この値は、ポートレット・コールが行われるたびに渡されます。「サブスクライバID」がプロデューサの予測した値でない場合、プロデューサは登録コールを拒否することがあります。

注意:

最初の登録後にプロデューサ登録を編集して「サブスクライバID」を変更しても、何も影響を与えません。異なる「サブスクライバID」を指定するには、プロデューサを登録する必要があります。

13. 「共有キー」フィールドに、暗号化を処理するために設定されているプロデューサに使用する共有キーを入力し、「終了」をクリックします。
共有キーは、メッセージ認証用のメッセージ署名を生成するための暗号化アルゴリズムで使用されます。プロデューサを共有鍵で設定し、誤った共有鍵を入力した場合、プロデューサの登録は失敗することに注意してください。共有キーには、英数字10から20文字を含めることができます。

62.4 ポートレット・プロデューサの接続の管理

ポートレット・プロデューサを登録した後、登録設定を編集、接続をテスト、プロデューサをリフレッシュして最新のポートレットのリストを取得、またはポートレット・プロデューサへの接続を削除できます。

この項には次のサブセクションが含まれます:

- 62.4.1項「ポートレット・プロデューサ登録設定の編集」

- 62.4.2項「ポートレット・プロデューサ接続のテスト」

- 62.4.3項「ポートレット・プロデューサのリフレッシュ」

- 第62.4.4項「ポートレット・プロデューサの削除」

62.4.1 ポートレット・プロデューサ登録設定の編集

WSRPポートレット・プロデューサの登録ウィザードと「PDK-Javaポートレット・プロデューサの登録」ウィザードではいずれも、プロデューサを登録したとき入力した値の多くをアクセスおよび修正できます。

ポートレット・プロデューサの登録設定を編集するには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルまたは「リソース・パレット」でそのプロデューサに移動します。

2. 編集するプロデューサを右クリックし、「プロパティ」を選択します。

3. 必要に応じてプロデューサ登録プロパティを編集し、「次へ」をクリックして、ウィザードの各ページの手順を実行します。
ウィザードの左側にあるナビゲーション・パネル内のリンクをクリックすることで、特定の手順に直接進むこともできます。

- WSRPプロデューサの設定の詳細は、第62.2項「WebCenter Portal: FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録」を参照してください。

- Oracle PDK-Javaプロデューサの設定の詳細は、第62.3項「WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

「プロデューサ登録名」を編集することはできません。

4. 必要な設定をすべて変更したら、「終了」をクリックします。

5. 「WSDL URL」、「URLエンドポイント」など、いくつかのプロパティの編集では、プロデューサのリフレッシュが必要です。そのような変更を実行して、プロデューサをただちにリフレッシュできるダイアログが表示された場合、変更を保存します。ただし、プロデューサをリフレッシュしないでください。リフレッシュすると、プロデューサの登録を編集するためのウィザードに戻ります。必要に応じて、「はい」、「いいえ」、または取消をクリックします。

注意:

「WSDL URL」フィールドの値は編集できますが、別のプロデューサを指定できるのは、新しいプロデューサが古いプロデューサのプリファレンス・ストアにアクセスできる場合、または古いプロデューサのプリファレンス・ストアが新しいプロデューサのそれに移行済である場合のみです。

6. プロデューサが正常にリフレッシュされたら、必要に応じて「OK」をクリックします。

7. 編集を完了した後は、プロデューサ接続をテストして、接続情報が有効であるか確認することを考慮してください。詳細は、62.4.2項「ポートレット・プロデューサ接続のテスト」を参照してください。

62.4.2 ポートレット・プロデューサ接続のテスト

接続テスト機能には、ポートレット・プロデューサ接続の有効性をテストする手段が備わっています。

ポートレット・プロデューサ接続をテストするには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルまたは「リソース・パレット」でそのプロデューサに移動します。

2. テストするプロデューサを右クリックし、「プロデューサ接続のテスト」を選択します。

3. テストの実行中は、プログレス・バーが表示されます。テストが完了すると、成功または失敗ダイアログが表示されます。「「OK」」をクリックしてダイアログを閉じます。
失敗ダイアログが表示された場合、プロデューサ登録詳細を編集し、プロデューサ接続を再テストしてください。さらに、特に失敗ダイアログの表示に長時間かかる場合、プロデューサが使用可能であることを確認してください。たとえば、プロデューサが統合WLSを介して提供されている場合は、統合WLSが実行されていることを確認してから接続を再テストしてください。

62.4.3 ポートレット・プロデューサのリフレッシュ

ポートレット・プロデューサをリフレッシュすると、そのプロデューサに属するポートレットもリフレッシュされます。新しく追加されたポートレットや、既存のポートレットに対する更新内容が、このプロデューサに属するポートレットを消費しているアプリケーションに対して使用可能になります。

ヒント:

ポートレットがプロデューサから削除された場合は、必ず、ポートレットが配置されているすべてのアプリケーション・ページからそのポートレットを手動で削除してください。詳細は、62.10項「アプリケーション・ページからのポートレットの削除」を参照してください。

ポートレット・プロデューサをリフレッシュするには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルまたは「リソース・パレット」でそのプロデューサに移動します。

2. リフレッシュするプロデューサを右クリックし、「プロデューサ登録のリフレッシュ」を選択します。

3. 「ポートレット・プロデューサのリフレッシュ」ダイアログ・ボックスで、「はい」をクリックします。

62.4.4 ポートレット・プロデューサの削除

特定のプロデューサをアプリケーションで使用しなくなった場合は、そのプロデューサを削除できます。ポートレットおよび関連するページ変数の削除の詳細は、第62.10項「アプリケーション・ページからのポートレットの削除」を参照してください。

注意:

プロデューサを削除すると、そのプロデューサに属するポートレットを消費するページには、ポートレットが使用できないことを示すエラー・メッセージが表示されます。同じ名前を使用してそのプロデューサを再登録するしても、ポートレットは依然として使用できません。

ポートレット・プロデューサを削除するには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルまたは「リソース・パレット」でそのプロデューサに移動します。

2. 削除するプロデューサを右クリックして「削除」を選択します。

3. 「削除の確認」ダイアログで「はい」をクリックします。

62.5 ポートレット・プロデューサ・タスク・フローの追加

ポートレット・プロデューサ・タスク・フロー(プロデューサ)によって、ユーザーは、実行時にポートレット・プロデューサ接続を管理できます。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用して作成されたアプリケーションの場合、ポートレット・プロデューサ・タスク・フローは、WebCenter Portal管理コンソール(「サービス」タブ)を使用してそのままで使用できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のサービス、ポートレット・プロデューサおよび外部アプリケーションの管理に関する説明を参照してください。

さらに、ポートレット・プロデューサ・タスク・フローは、他のタスク・フローと同様にアプリケーション・ページに追加できます。これは、WebCenter PortalのFrameworkアプリケーション・テンプレートを使用しておらず、したがって、WebCenter Portal管理コンソールがプロジェクトの一部ではない場合に特に便利です。プロデューサ・タスク・フローを介してポートレット・プロデューサ接続を管理または表示するには、次のような特別な権限が必要です。

- AppConnectionManager - このロールを持つユーザーは、実行時にポートレット・プロデューサ接続を登録、変更、および削除できます。

- AppConnectionViewer - このロールを持つユーザーは、実行時にポートレット・プロデューサ接続を表示できます。デフォルトでは、ログインしている(つまり、authenticated-userロールを持つ)ユーザーはすべて、このロールを付与されます。

デフォルトでは、Administratorロールを持つユーザーはポートレット・プロデューサを管理できます。他のユーザーがポートレット・プロデューサ・タスク・フローを介して接続を管理できるようにする場合は、彼らにAppConnectionManagerロールを付与する必要があります。

ポートレット・プロデューサ・タスク・フローを追加するには:

1. タスク・フローを追加するアプリケーションのJSFページを作成または開きます(第5.3項「ポータルへのページの追加」を参照)。

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ユーザーとしてログインします。図62-1に示す画面が表示されます。

図62-1 ポートレット・プロデューサ・タスク・フロー

「図62-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を使用したアプリケーション・ロールの付与に関する項を参照)。

62.6 ページへのポートレットの追加

Frameworkアプリケーション・ページへのポートレットの配置は、「アプリケーション・リソース」パネルまたは「リソース・パレット」からポートレットをそのページにドラッグ・アンド・ドロップする簡単な操作で実行できます。

この項には次のサブセクションが含まれます:

- 第62.6.1項「ページへのポートレットの追加方法」

- 第62.6.2項「ページへのポートレットの追加時の処理」

- 第62.6.3項「ポートレット間通信に関する必知事項」

- 第62.6.4項「インライン・フレームに関する必知事項」

- 第62.6.5項「ポートレットのサイズ設定に関する必知事項」

- 第62.6.6項「最小化、リストアおよび移動に関する必知事項」

- 第62.6.7項「実行時の処理」

始める前に

ページ上にポートレットを配置するには、この簡単な操作を実行する前に実行する必要があるいくつかの準備手順があります。次のような内容が含まれます。

1. Frameworkアプリケーションの作成。詳細は、第5.2.1項「Frameworkアプリケーションの作成方法」を参照してください。

2. アプリケーション・ページの作成。詳細は、第5.3項「ポータルへのページの追加」を参照してください。

3. アプリケーションへのポートレットのプロデューサの登録。詳細は、第62.2項「WebCenter Portal: FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録」または第62.3項「WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

4. 消費しようとするポートレットの一部が、独自の認証を処理するアプリケーションに属していることがあります。このような場合は、アプリケーションを外部アプリケーションとして登録し、その提供元のポートレット・プロデューサに対して識別する必要があります。詳細は、第68章「WebCenter Portal: Frameworkアプリケーションの保護」を参照してください。

5. 消費しようとするポートレットの一部が、Secure Socket Layer (SSL)対応のプロデューサに属していることもあります。SSL対応プロデューサにアクセスしようとすると、セキュリティ・アラート・ダイアログが表示され、プロデューサの証明書を表示して信頼できる証明書リストに追加するように要求されることがあります。セキュリティ・アラート・ダイアログが表示されるのは、プロデューサが、広く受け入れられていない認証局によって発行されたセキュリティ証明書を使用する場合のみです。このようなプロデューサからのポートレットを消費するには、まず、プロデューサのセキュリティ証明書をキーストアに追加する必要があります。詳細は、第68.14項「キーストアへのカスタム証明書の登録」を参照してください。

62.6.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>

注意:

FrameworkアプリケーションのページにPeopleSoftポートレットを追加する場合、renderPortletInIFrameポートレット・タグ属性をtrueに設定する必要があります。

詳細は、第62.7項「ポートレット・タグの属性値の設定」を参照してください。

62.6.2 ページへのポートレットの追加時の処理

ポートレットをページに追加すると、ポートレット・タグ(adfp:portletまたはadfph:portlet)がページ・ソースに追加されます。これは、ポートレット・コンポーネントを表すタグです。このタグに含まれている属性を「プロパティ・インスペクタ」を使用するかページ・ソースで編集することで、そのポートレットの動作および外観をさらに制御できます。これらの属性の詳細は、第62.7項「ポートレット・タグの属性値の設定」を参照してください。

使用するポートレット・タグのタイプは、次のものによって決まります。

- プロジェクトが、リッチ・クライアント・コンポーネントのみに対して構成されている場合は、adfp:portletタグが使用されます。

- プロジェクトが、Trinidadコンポーネントのみに対して構成されている場合は、adfph:portletタグが使用されます。

- プロジェクトがリッチ・クライアントとTrinidadの両方のコンポーネントに対して構成されている場合、ダイアログが表示され、そこでどのポートレット・タグを使用するのかを選択できます。

- プロジェクトが、リッチ・クライアントとTrinidadのどちらのコンポーネントに対しても構成されていない場合は、adfp:portletタグが使用され、プロジェクトはリッチ・クライアント・コンポーネントに対して自動的に構成されます。

これは、ポートレットのルック・アンド・フィールが、ページ上の他のコンポーネントのものと一致するようにするためです。たとえば、第5.3項「ポータルへのページの追加」の説明に従ってページを作成した場合、そのページはリッチ・クライアント・ページです。この場合、例62-1に示すように、ポートレットはadfp:portletタグを使用して追加されます。

例62-1 ポートレットが含まれているリッチ・クライアント・ページ

<?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コンポーネントが使用されます。この場合、例62-2に示すように、ページ上にポートレットをドラッグすると、adfph:portletタグが使用されます。

例62-2 ポートレットが含まれている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タグを含むページに配置されているポートレットは、例62-3のように配置されます。

例62-3 ポートレット・タグの階層配置

af:document
af:form
cust:panelCustomizable
adfp:portlet

注意:

ADF Facesリッチ・クライアント・コンポーネントとHTMLまたはTrinidadコンポーネントを同じページ上に混在させないことをお薦めします。そのようにすると、実行時に予期しない結果になることがあります。したがって、コンポーザHTMLコンポーネント内にリッチ・クライアント・ポートレットを配置したり、コンポーザ・リッチ・クライアント・コンポーネント内にHTMLポートレットを配置しないでください。

コンポーザ・タグの詳細は、第19章「コンポーザを使用したページの実行時編集の有効化」を参照してください。

注意:

OmniPortletのインスタンスをページ上にドロップする場合、プロパティ・インスペクタを開き、「表示モード」カテゴリの下のAllModesSharedScreenプロパティがfalse(デフォルト値)に設定されていることを確認します。このプロパティをtrueを設定すると、OmniPortletウィザードでOmniPortletの特定のセクションを編集できなくなることがあります。

62.6.3 ポートレット間通信に関する必知事項

WebCenter Portal: Frameworkアプリケーションのインタラクティブ性を高める1つの方法として、関連するコンポーネントをリンクして、これらのコンテンツをコンテキストに即して同期させる方法があります。たとえば、1つのページに2つの株式ポートレットがあり、一方は株価のデータを提供し、もう一方は株式のヘッドライン・ニュース・アイテムを提供するとします。どちらのポートレットも株式ティッカ・シンボルに基づいているため、株価ポートレット内のティッカ・シンボルが変更されると、株式ヘッドライン・ポートレットはその変更を取り込んで、同じティッカ・シンボルに関連するヘッドラインを使用して自動的にリフレッシュする、という動作は筋が通っています。

JSR 286標準では、パブリック・レンダラ・パラメータが導入されており、それを使用してページ上のポートレットをリンクできます。詳細は、第59.3.5項「JSR 286ポートレットでのパブリック・レンダラ・パラメータの使用方法」を参照してください。

JSR 286標準では、ポートレット・イベントもサポートされています。ポートレット・イベントを使用すると、ページ上の任意の場所で発生するアクションに基づいてポートレットのコンテンツを制御できます。ポートレット・イベントは、ポートレットがそれ自体のイベントをトリガーすることでイベントに応答し、それがそのページ上の他のポートレットに影響を与えるようにカスケードできます。ポートレット・イベントは、ADFコンテキスト・イベントによって消費することもでき、コンテキスト・イベントはポートレットによって消費できます。これを使用して、ポートレットとタスク・フローをコンテキストに即してリンクできます。詳細は、第59.3.6項「JSR 286ポートレットでのポートレット・イベントの使用方法」を参照してください。

ページにポートレットを追加すると、ポートレット・バインディングがそのページ定義ファイルに追加されます。このポートレット・バインディングには、ポートレットがパラメータの変更およびイベントを自動的にリスニングするかどうかを指定する属性が含まれています(例62-4)。

例62-4 ポートレット・バインディング

<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に設定すると、このパラメータおよびイベントの自動リスニングを無効化できます。たとえば、ページに、同じポートレットの複数のインスタンスが含まれていて、それらは、異なるソースから値を取得する必要がある場合があります。パラメータおよびイベントの自動リスニングを無効化する場合、またはポートレットで、リンクに使用するものと一致しない名前を持つパラメータまたはイベントを定義する場合、ポートレット・ワイヤリングを手動で構成する必要があります。詳細は、第62.8項「JSR 286ポートレットでのパラメータとイベントの手動によるワイヤリング」を参照してください。

62.6.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ページ上の他のコンポーネントの障害となることがあります。

インライン・フレームの使用によるアクセシビリティへの影響は、第2.9項「WebCenterアクセシビリティ機能の概要」を参照してください。

62.6.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を使用した場所になります。

62.6.6 最小化、リストアおよび移動に関する必知事項

開発環境のニーズに合せるために、Show Detail Frameおよびportletコンポーネントのアクション「最小化」、「リストア」および「移動」の動作は、設計時と実行時では異なります。設計時では、これらのアクションは特定の1つのWLSセッションでは維持されますが、セッション間では維持されません(セッションとは、WLSの開始から停止までの時間を意味します)。実行時では、これらのアクションは特定の1つのWLSセッションおよびセッション間の両方で維持されます。

この違いは、設計時におけるアプリケーション・ページの自動リセットを可能にするために取り入れられたものです。

実行時にセッション間で維持する必要がない場合は、アプリケーションのweb.xmlファイルに単純な変更を行うことでそれをオフにできます。アプリケーションのweb.xmlファイル内で、次のパラメータ設定を見つけます(例62-5)。

例62-5 アプリケーションの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>

これを次のコードで置き換えます(例62-6)。

例62-6 アプリケーションの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. いったんログアウトしてからユーザーとしてログインし、アクションの効果を確認します。

62.6.7 実行時の処理

ページ上にポートレットを配置したら、そのページを右クリックし、「実行」を選択します。これにより、ページが表示され、デフォルト・ブラウザでJDeveloperの統合WLSを使用してポートレットが実行されます。ポートレットによっては、追加の実行時構成が必要になることもあります。特に、OmniPortletポートレットまたはWebクリッピング・ポートレットのインスタンスの内容は実行時に定義されます。OmniPortletの詳細は、第63章「OmniPortletを使用したポートレットの作成」を参照してください。Webクリッピング・ポートレットの詳細は、第64章「Webクリッピングを使用したコンテンツ・ベースのポートレットの作成」を参照してください。ポートレット全般の詳細は、第57章「ポートレットの概要」を参照してください。

「編集」モード(Frameworkアプリケーションでは、ポートレット・ヘッダーに「パーソナライズ」アイコン(鉛筆アイコン)としてレンダリングされる)を備えたポートレットを実行する場合、認証されたユーザー(つまり、ログインしているユーザー)にのみ、「パーソナライズ」アイコンが表示されます。匿名ユーザーまたはパブリック・ユーザーには、ポートレットをパーソナライズするためのオプションは表示されません。ポートレットを消費するアプリケーションで、ユーザーがポートレットのビューをパーソナライズできるようにするには、あらかじめなんらかの形態のセキュリティを実装しておく必要があります。ポートレットおよびページを作成する開発者は、アプリケーションに完全なセキュリティ・モデルを作成せずに、ポートレットの「編集」モードをテストする必要があることがあります。セキュリティを追加してポートレットの「編集」モードのテストを有効化する方法の詳細は、第68.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"/>

このエントリは、実行時のポートレットの消費を可能にするために必要です。

ポートレットでパラメータまたはイベントがサポートされており、パラメータおよびイベントの自動リスニングが有効化されている場合、サポートされているパラメータおよびイベント(または別名が付けられているパラメータおよびイベント)に対するすべての変更によって、ポートレットが自動的に更新されます。

外部アプリケーションに関連付けられているプロデューサからポートレットを実行する場合、ログイン情報を更新するためのリンクが表示されます。リンクをクリックすると、外部アプリケーション資格証明を入力するための資格証明プロビジョニング・ページが表示されます。有効な資格証明を指定すると、それに従ってポートレットによってコンテンツが表示されます。外部アプリケーションの詳細は、第68.13項「外部アプリケーションの使用」を参照してください。

62.7 ポートレット・タグの属性値の設定

ページのソース・コード・ビューで、各ポートレットはadfp:portletタグ(またはadfph:portletタグ)で表され、その中に必須属性とオプション属性のセットが含まれています。必須属性であるvalueおよびportletTypeはフレームワークによって自動的に設定され、変更できません。オプション属性値は、ポートレットにその属性のサポートが組み込まれている場合に適用されます。たとえば、isAboutModeAvailableをtrueに設定できますが、ポートレットに情報モードが定義されていない場合、この属性設定はポートレットに影響を与えません。

また、ポートレットでは、スタイル関連属性のセットがサポートされています。これらの属性については、第21.10項「コンポーネントへのスタイルの適用」で詳しく説明しています。

ポートレット・タグでは多数の属性を使用します。それらはJDeveloperのプロパティ・インスペクタを使用するか、タグの属性としてソース・コードで、設計時に設定できます。

この項には次のサブセクションが含まれます:

- 第62.7.1項「プロパティ・インスペクタを使用してポートレット・タグに属性値を設定する方法」

- 第62.7.2項「ポートレット・タグの属性値をソース・コードで設定する方法」

- 第62.7.3項「ポートレット・タグの共通属性」

- 第62.7.4項「ポートレット・タグの外観属性」

- 第62.7.5項「ポートレット・タグの動作属性」

- 第62.7.6項「ポートレット・タグのポートレット・モード属性」

- 第62.7.7項「ポートレット・タグのスタイル属性」

- 第62.7.8項「ポートレット・タグのバインディング属性」

- 第62.7.9項「ポートレット・タグのカスタマイズ属性」

- 第62.7.10項「ポートレット・タグのその他の属性」

62.7.1 プロパティ・インスペクタを使用してポートレット・タグに属性値を設定する方法

プロパティ・インスペクタは、ソース・コードを自分で編集することなく、ポートレット・タグの属性値を設定する迅速で簡単な方法を提供します。

プロパティ・インスペクタを使用してポートレット・タグの属性値を設定するには:

1. アプリケーション・ナビゲータで、ポートレットが表示されるページが含まれているアプリケーションを開きます。

2. ページが含まれているプロジェクトを開きます。

3. ページを見つけ、それを右クリックし、「開く」を選択します。

ヒント:

ページをダブルクリックして開くこともできます。

4. デザイン・ビューで、設定する属性を持つポートレットを選択します。

5. プロパティ・インスペクタで、該当するタブをクリックし、目的の属性を設定します。
必要な回数だけ、この手順を繰り返します。

6. 変更内容を保存します。

7. 行った変更をテストするには、ページを右クリックし、「実行」を選択します。

62.7.2 ポートレット・タグの属性値をソース・コードで設定する方法

ソース・コードで作業する場合は、ポートレット・タグの属性値をそこで直接設定できます。

ソース・コードでポートレット・タグの属性値を設定するには:

1. アプリケーション・ナビゲータで、ポートレットが表示されるページが含まれているアプリケーションを開きます。

2. ページが含まれているプロジェクトを開きます。

3. ページを見つけ、それを右クリックし、「開く」を選択します。

ヒント:

ページをダブルクリックして開くこともできます。

4. デザイン・ビューで、設定する属性を持つポートレットを選択します。

5. 「ソース」タブをクリックします。選択したポートレットが、ソース・コード内で強調表示されます。

6. ソース・コードに変更を直接行います。例62-7は編集済ポートレット・タグを示しています。

例62-7 編集済ポートレット・タグ

<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. 行った変更をテストするには、ページを右クリックし、「実行」を選択します。

62.7.3 ポートレット・タグの共通属性

表62-1は、ポートレット・タグの共通属性について説明しています。

表62-1 ポートレット・タグの共通属性

属性

値

説明

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つのトリガー・コンポーネントが、なんらかの方法でそれを更新するトリガー・イベントを受け取った場合、このポートレットでも更新が要求されます。

62.7.4 ポートレット・タグの外観属性

表62-2は、ポートレット・タグの外観属性について説明しています。

表62-2 ポートレット・タグの外観属性

属性

値

説明

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内にレンダリングされます。

詳細は、第62.6.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 - 「移動」コマンドを表示しません。

設計時と実行時では「移動」コマンドの動作のしかたが異なります。詳細は、第62.6.6項「最小化、リストアおよび移動に関する必知事項」を参照してください。

showRemoveAction

menu
none

デフォルト: menu

ポートレット・クロムに「削除」アイコンを表示するかどうか。

- menu - ポートレットの「アクション」メニューに「削除」コマンドを表示します。

- なし - 「削除」アイコンを表示しません。

設計時と実行時では「削除」アイコンの動作のしかたが異なります。詳細は、第62.6.6項「最小化、リストアおよび移動に関する必知事項」を参照してください。

注意: この属性はadfp:portletタグにのみ使用でき、adfph:portletタグには使用できません。

showResizer

always
never

デフォルト: always

ポートレットの右下隅にあるサイズ変更ハンドルを表示するかどうか。

- always - サイズ変更ハンドルを常に表示します。

- never - サイズ変更ハンドルを表示しません。

注意: この属性はadfp:portletタグにのみ使用でき、adfph:portletタグには使用できません。

showMinimizeAction

chrome
none

デフォルト: chrome

ポートレット・クロムに「最小化」アイコンを表示するかどうか。

- chrome - ポートレット・クロムに「最小化」アイコンを表示します。

- none - 「最小化」アイコンを表示しません。

設計時と実行時では「最小化」アイコンの動作のしかたが異なります。詳細は、第62.6.6項「最小化、リストアおよび移動に関する必知事項」を参照してください。

62.7.5 ポートレット・タグの動作属性

表62-3は、ポートレット・タグの動作属性について説明しています。

表62-3 ポートレット・タグの動作属性

属性

値

説明

partialTriggers

1つ以上のコンポーネントID。例:

partialTriggers="_id1 _id2 componentID5"

空白でコンポーネントIDを区切ります。

部分更新をトリガーするコンポーネントのID。ポートレットは、指定されたトリガー・コンポーネントをリスニングします。1つのトリガー・コンポーネントが、なんらかの方法でそれを更新するトリガー・イベントを受け取った場合、このポートレットでも更新が要求されます。

submitUrlParamters

false
true

デフォルト: false

ページから、ポートレットが配置されているページを指すポートレット・リンク内のパラメータを使用できるようにするかどうか。

- false - ページからパラメータを使用できるようにしません。これらのパラメータは、リクエストを開始したポートレット内部でのみ使用可能です。

- true - コンテナ・ページでパラメータは使用可能です。

62.7.6 ポートレット・タグのポートレット・モード属性

ポートレット・モード属性は、編集モードへの切替えなど、モード切替えUIアクションのレンダリングを制御します。特定のモードでポートレットをレンダリングできるかどうかは、ポートレットでサポートされているモードおよびユーザー認可によって決まります。たとえば、isCustomizeModeAvailable属性がtrueに設定されていても、そのアクションがポートレットでサポートされていなければ、この属性設定はポートレットに影響を与えません。

表62-4に示すポートレット・モード属性は、trueまたはfalseに評価される値バインディング式です。

- trueは、その名前のモードでポートレットをレンダリングできることを意味します。

- falseは、その名前のモードでポートレットをレンダリングできないことを意味します。

表62-4 ポートレット・タグのポートレット・モード属性

属性

値

説明

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)ウィザードで「編集」を選択する操作に相当します。

「パーソナライズ」アイコンは、認証を受けたユーザー(つまりログインしているユーザー)にのみ表示されます。パブリック・ユーザーまたは認証を持たないユーザーには表示されません。ユーザーがポートレットの表示をパーソナライズできるようにするには、なんらかのアプリケーション・セキュリティを実装する必要があります。

ポートレットを作成する開発者が、アプリケーション用の完全なセキュリティ・モデルを作成せずに「パーソナライズ」モードをテストする場合は、第68.12項「ポートレット・パーソナライズをテストするための基本認証の構成」を参照してください。

注意: パーソナライズ設定が一般的に行われるのは、ポートレット・タイトルです。設計時にポートレット・タイトルを設定するには、title属性に値を指定します。ただし、設計時にtitle属性に値を入力することにより、実行時のポートレット・タイトルのパーソナライズおよびカスタマイズの妨げになることを考慮してください。

isPreviewModeAvailable

false
true

デフォルト: false

ポートレット・コンテンツのプレビューを有効化するかどうか。

このモードには、Frameworkアプリケーションで特定のアプリケーションはありませんが、Oracle Portal'のポートレット・リポジトリでは使用され、虫眼鏡アイコンとしてレンダリングされて、ユーザーはポートレットをプレビューするためにこれをクリックします。

62.7.7 ポートレット・タグのスタイル属性

表62-5は、ポートレット・タグのスタイル属性について説明しています。

表62-5 ポートレット・タグのスタイル属性

属性

値

説明

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プロパティの理解」を参照してください。

62.7.8 ポートレット・タグのバインディング属性

表62-6は、ポートレット・タグのバインディング属性について説明しています。

表62-6 ポートレット・タグのバインディング属性

属性

値

説明

binding

マネージドBeanの名前。例:

binding="#{frameActionsBean.Binding}"

プロパティ・インスペクタで、フィールドの横にある「プロパティ・メニュー」アイコンをクリックし、「編集」を選択して、マネージドBeanを選択し、関連するマネージドBeanプロパティを指定します。

コンポーネント・インスタンスを格納するためのバインディング参照。バインディング参照によって、ポートレットのインスタンスがマネージドBeanプロパティにバインドされます。マネージドBeanは、JSF faces-config.xmlファイル内に登録されているアプリケーションで使用されるJavaBeansです。

62.7.9 ポートレット・タグのカスタマイズ属性

表62-7は、ポートレット・タグのカスタマイズ属性について説明しています。

表62-7 ポートレット・タグのカスタマイズ属性

属性

値

説明

customizationAllowed

false
true

デフォルト: true

ポートレット・タグの設計時カスタマイズがこのポートレットに対して可能かどうか。

customizationAllowedBy

テキスト文字列

設計図カスタマイズが許可されるロール。この属性によってカスタマイズの許可が可能になりますが、実際にそれを誰が実行できるのかを制限します。

62.7.10 ポートレット・タグのその他の属性

表62-8は、ポートレット・タグのその他の属性について説明しています。

表62-8 ポートレット・タグのその他の属性

属性

値

説明

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が使用されます。

62.8 JSR 286ポートレットでのパラメータとイベントの手動によるワイヤリング

ページに追加するポートレットで、そのコンテンツを動的に変更するために使用されるパラメータまたはイベントが定義される場合、多くの部分で、これは自動的に行われます。詳細は、第62.6.3項「ポートレット間通信に関する必知事項」を参照してください。

ただし、状況によっては、デフォルトのパラメータおよびイベントの自動リスニングをオフにする必要があるか、適切な別名に一致しないかそれらを定義しない名前を持つパラメータまたはイベントを持つポートレットを使用することもあります。そのような場合、ポートレット内のパラメータおよびイベントを手動でワイヤリングする必要があります。

この項には、次の項目が含まれます。

- 第62.8.1項「パブリック・レンダラ・パラメータとポートレットの手動によるリンク方法」

- 第62.8.2項「ポートレット・イベントとポートレットの手動によるリンク方法」

62.8.1 パブリック・レンダラ・パラメータとポートレットの手動によるリンク方法

ページ上にポートレットを配置するときに、同じQNameを持つパブリック・レンダラ・パラメータはすべて自動的にリンクされます。たとえば、1つのポートレットが、myParamという名前のパラメータに値を公開し、ページ上の2番目のポートレットが同じ名前を持つパラメータから値を受け入れる場合、2番目のポートレットは適切な値で自動的に更新されます。

ポートレット開発者がパラメータの別名を設定した場合、異なるQNameを持つパラメータを使用して、複数のポートレットを一緒にリンクすることもできます。

次の例では、パブリック・レンダラ・パラメータを使用して、異なる名前を持ち、別名を定義されていないパラメータを使用して2つのポートレット動作をリンクする方法を示しています。この例では、パブリック・レンダラ・パラメータの更新を可能にする汎用パラメータ・フォーム・ポートレットを取り上げて、どのようにして株価をレンダリングする株価ポートレットにそれをリンクして、パブリック・レンダラ・パラメータから株式記号を取得できるかを示します。

これらの2つのポートレットを同じページ上にドロップするときに、それらが自動的に互いにリンクされることはありません。これは、パラメータ・フォーム・ポートレットの汎用パラメータ名のいずれも、株価ポートレットのstocksymbolパラメータに一致せず、株価ポートレットではパラメータ・フォーム・ポートレットの汎用パラメータ名に一致するstocksymbolパラメータの別名が定義されていないためです。

パラメータを手動でリンクするには、次の2つの方法があります。

- 第62.8.1.1項「ページ変数を使用したパラメータの手動によるリンク」

- 第62.8.1.2項「ParametersChange ADFコンテキスト・イベントを使用したパラメータの手動によるリンク」

62.8.1.1 ページ変数を使用したパラメータの手動によるリンク

ポートレットがページ上にドロップされるときに、ポートレットによってサポートされているパラメータごとにページ変数が作成されます。私たちの例では、ページ変数は、パラメータ・ホーム・ポートレットに対して3つ、株価ポートレットに対して1つあります(例62-8)。

例62-8 ポートレット・パラメータに対して作成されるページ変数

<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つからの値を使用するようにすることができます(例62-9)。

例62-9 ページ変数を使用したポートレット・パラメータのリンク

<portlet id="StockPricePortlet1_1"
...>
<parameters>
<parameter name="stocksymbol"
pageVariable="ParameterFormPortlet1_1_Parameter1"/>
</parameters>
<events>
<event eventType="ParametersChange"
name="StockPricePortlet1_1_Event"/>
</events>
</portlet>

ここで、パラメータ・フォーム・ポートレットの最初のパラメータ・フィールドに値を入力すると、対応するページ変数がそれと同じ値に設定され、それによって、株価ポートレットがその新しい値で更新されます。

62.8.1.2 ParametersChange ADFコンテキスト・イベントを使用したパラメータの手動によるリンク

パラメータおよび前の項で説明したページ変数をサポートするポートレットをドロップすると、ADF ParametersChangeコンテキスト・イベントがそのポートレットに対して作成されます。このイベントは、そのポートレットのパラメータの値が変更されるとトリガーされます。このイベントのペイロードは、そのパラメータの新しい値です。このイベントを使用すると、ページ定義で最初のポートレットのイベントのペイロードを2番目のポートレットのパラメータにマップするイベント・マップを作成することによって別のポートレットのパラメータの値を設定できます。例62-10は、私たちの例の場合に、このイベント・マップがどのようなものになるのかを示しています。

例62-10 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パラメータの値を指定するために使用されます。

62.8.2 ポートレット・イベントとポートレットの手動によるリンク方法

次の例では、異なるポートレットに対して定義されているイベントの名前が一致しない場合に、ポートレット・イベントを使用して手動でポートレットをリンクする方法を示します。

ヒント:

この項の例が含まれているZIPファイルは次の場所からダウンロードできます。

http://www.oracle.com/technetwork/middleware/webcenter/ps3-samples-176806.html

この例では、1つの会社の様々なオフイスの地理的な位置をリストした部門の位置ポートレットがあるとします。部門の位置ポートレットでは、特定の部門がポートレット内で選択されると、ポートレット・イベント(latLong)が発生します。

Googleマップを表示するマップ・ポートレットという別のポートレットがあります。マップ・ポートレットは、マップ上に表示する位置の判別に使用するポートレット・イベント(geolocation)をリスニングします。

この2つのポートレットが1つのページ上にドロップされている場合、マップ・ポートレットには、マップの表示に使用できる情報を提供するイベントが部門の位置ポートレットによって発生したことを知る方法がありません。この2つのポートレット間のリンクを作成するには、例62-11に示すようにページ定義を編集して2つのイベントの間のマッピングを明示的に作成する必要があります。

例62-11 ページ定義における明示的なイベント・マッピング

<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>

62.9 ポートレットのコピー

ポートレットをコピーする場合、ポートレットとそのコピーは同じアプリケーション内に置く必要があります。たとえば、ポートレットを、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コンポーネントを配置することです。これによって、必要なコード変換が自動的に実行されます。

この項には次のサブセクションが含まれます:

- 第62.9.1項「ポートレットをコピーしてそれを同じページに配置する方法」

- 第62.9.2項「アプリケーション・ページから別のアプリケーション・ページにポートレットをコピーする方法」

62.9.1 ポートレットをコピーしてそれを同じページに配置する方法

ポートレットを同じページにコピーすると、両方のポートレット・インスタンスにそのページのリソースすべてが使用可能になるため、そのページのページ定義ファイルからポートレット関連情報をコピーする必要はありません。それは、ポートレットの表示タグをコピーして貼り付けてコピーに一意の識別子を割り当てるだけのことです。

同じページにポートレットをコピーして配置するには:

1. アプリケーション・ナビゲータで、コピーするポートレットが表示されるページが含まれているアプリケーションを開きます。

2. ページが含まれているプロジェクトを開きます。

3. ページを見つけ、それを右クリックし、「開く」を選択します。

ヒント:

ページをダブルクリックして開くこともできます。

4. デザイン・ビューで、コピーするポートレットを選択します。

5. 「ソース」タブをクリックします。選択したポートレットが、ソース・コード内で強調表示されます。

6. ポートレット・タグをコピーします(例62-12)。

例62-12 ポートレットをコピーする際にコピーするコード部分

<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属性に一意の値を指定します(例62-13)。

例62-13 ポートレット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内に新しいメソッドを作成します。

たとえば、例62-14に示すように、portlet1をコピーした場合、貼り付けられたコピーはマネージドBeanクラスでportet2になります。

例62-14 マネージドBeanクラスでのマネージドBeanの新しいメソッドの作成

.
private PortletBase portlet2;
public void setPortlet2(PortletBase portet2) {
this.portlet2 = portlet2;
}
.
public PortletBase getPortlet2() {
return portlet2;
}

10. メイン・メニューから、「ファイル」→「すべて保存」の順に選択します。

62.9.2 アプリケーション・ページから別のアプリケーション・ページにポートレットをコピーする方法

アプリケーション内の異なるページ間でポートレットをコピーする場合は、ソース・ページのページ定義ファイルからポートレット関連のコードをコピーする必要もあります。この項では、異なるアプリケーション・ページ間でのコピーと、異なるアプリケーション・プロジェクト間でのコピーに関連する手順を示します。

1つのページから別のページにポートレットをコピーするには:

1. アプリケーション・ナビゲータで、コピーするポートレットが表示されるページが含まれているアプリケーションを開きます。

2. ページが含まれているプロジェクトを開きます。

3. ページを見つけ、それを右クリックし、「開く」を選択します。

ヒント:

ページをダブルクリックして開くこともできます。

4. デザイン・ビューで、コピーするポートレットを選択します。

5. 「ソース」タブをクリックします。選択したポートレットが、ソース・コード内で強調表示されます。

6. ポートレット・タグをコピーします(例62-15)。

例62-15 ポートレットをコピーする際にコピーするソース・ページのコード部分

<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タグが使用されていることを確認します。

別のプロジェクトのページにポートレットをコピーする場合、ターゲット・プロジェクトは、ポートレットを消費するように構成されている必要があります。プロジェクトを構成するには、プロジェクトにポートレット・プロデューサを登録する必要があります。詳細は、第62.2項「WebCenter Portal: FrameworkアプリケーションへのWSRPポートレット・プロデューサの登録」または第62.3項「WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

8. 「ソース」タブをクリックし、コピーしたコード・フラグメントを、ページ・ソースの目的の場所に貼り付けます。

9. アプリケーション・ナビゲータで、ソース・ページ(ポートレットのコピー元のページ)を右クリックし、「ページ定義に移動」を選択します。

10. 「ソース」タブをクリックし、ソース・ページのページ定義ファイルからポートレット・バインディングをコピーします(例62-16)。

例62-16 ページ定義ファイルからコピーするコード部分

<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. メイン・メニューから、「ファイル」→「すべて保存」の順に選択します。

62.10 アプリケーション・ページからのポートレットの削除

アプリケーション・ページからポートレットを削除する場合、そのポートレットにパラメータが含まれていれば、アプリケーション・ページのページ定義ファイルから、これらのパラメータに関連付けられたページ変数も削除する必要があります。

ポートレットとそれに関連するページ変数をページから削除するには:

1. アプリケーション・ナビゲータで、削除するポートレットが表示されるページが含まれているアプリケーションを開きます。

2. ページが含まれているプロジェクトを開きます。

3. ページを見つけ、それを右クリックし、「開く」を選択します。

ヒント:

ページをダブルクリックして開くこともできます。

4. デザイン・ビューで、削除するポートレットを右クリックして、「削除」を選択します。
これによって、ページからポートレットが削除され、ページ定義ファイルからポートレット・バインディングが削除されます。

5. ポートレットに変数が含まれている場合、アプリケーション・ナビゲータで、ページを右クリックし、「ページ定義に移動」を選択します。

6. 「ソース」タブをクリックし、削除したポートレットに関連付けられているページ変数を見つけて、ページ定義ファイルから削除します。
たとえば、portlet1を削除した場合は、例62-17で強調表示された変数も削除します。

例62-17 ページ定義ファイルからのポートレット関連ページ変数の削除

<?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. メイン・メニューから、「ファイル」→「すべて保存」の順に選択します。

62.11 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サービス・ポートレットの構成に関する項を参照してください。

この項には次のサブセクションが含まれます:

- 第62.11.1項「Oracle PortalでのWebCenterサービス・ポートレットの消費方法」

- 第62.11.2項「Oracle WebLogic PortalでのWebCenterサービス・ポートレットの消費方法」

- 第62.11.3項「Oracle WebCenter InteractionでのWebCenterサービス・ポートレットの消費方法」

- 第62.11.4項「WebCenterサービス・ポートレット・パラメータの設定方法」

- 第62.11.5項「WebCenterサービス・ポートレットの制限」

- 第62.11.6項「WebCenterサービス・ポートレットでの問題のトラブルシューティング」

62.11.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ユーザーズ・ガイドのページへのポートレットの追加に関する項を参照してください。

62.11.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ポータル開発ガイドのページへのコンテンツの追加に関する項を参照してください。

62.11.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ページレット・プロデューサ・リモート・サーバーの作成に関する項を参照してください。

http://docs.oracle.com/cd/E23010_01/wci.1034/e14107/toc.htm

3. Oracle WebCenter Interactionアプリケーションにページレット・プロデューサを登録するときは、使用するページレットごとにリモート・ページレットWebサービスを作成する必要があります。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Interaction管理者ガイドのリモート・ページレットWebサービスの作成または編集に関する項を参照してください。

http://docs.oracle.com/cd/E23010_01/wci.1034/e14107/toc.htm

4. 次に、ページレットのポートレットを作成します。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Interaction管理者ガイドのポートレットの作成または編集に関する項を参照してください。

http://docs.oracle.com/cd/E23010_01/wci.1034/e14107/toc.htm

5. 最後に、Oracle WebCenter Interactionコミュニティ・ページにポートレットを追加できます。
これを実行する方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Interaction管理者ガイドのコミュニティ・ページの作成に関する項を参照してください。

http://docs.oracle.com/cd/E23010_01/wci.1034/e14107/toc.htm

62.11.4 WebCenterサービス・ポートレット・パラメータの設定方法

WebCenterサービス・ポートレットによって提供される各ポートレットでは、各種パラメータが定義され、それによって、アプリケーションでポートレットを消費するときにそれの外観または動作を変更できます。

この項には次のサブセクションが含まれます:

- 第62.11.4.1項「WebCenterサービス・ポートレットの共通パラメータ」

- 第62.11.4.2項「ドキュメント・マネージャ・ポートレット・パラメータ」

- 第62.11.4.3項「ディスカッション・フォーラム・ポートレット・パラメータ」

- 第62.11.4.4項「ブログ・ポートレット・パラメータ」

- 第62.11.4.5項「リスト・ポートレット・パラメータ」

- 第62.11.4.6項「投票マネージャ・ポートレット・パラメータ」

- 第62.11.4.7項「投票の実施ポートレット・パラメータ」

- 第62.11.4.8項「お知らせポートレット・パラメータ」

- 第62.11.4.9項「メール・ポートレット・パラメータ」

- 第62.11.4.10項「アクティビティ・ストリーム・ポートレット・パラメータ」

- 第62.11.4.11項「タグ・クラウド・ポートレット・パラメータ」

62.11.4.1 WebCenterサービス・ポートレットの共通パラメータ

表62-9は、WebCenterサービス・ポートレットによって提供されるすべてのポートレットに使用できるパラメータを示しています。

表62-9 WebCenterサービス・ポートレットの共通パラメータ

パラメータ

説明

width

消費するページ上のポートレットの幅を指定します。指定しない場合、ポートレットは、ページで許容される最大の大きさ水平方向の領域を取ります。

height

消費するページ上のポートレットの高さを指定します。指定しない場合、ポートレットの高さはポートレット・コンシューマにより決定されます。

62.11.4.2 ドキュメント・マネージャ・ポートレット・パラメータ

表62-10は、ドキュメント・マネージャ・ポートレットに使用できる追加のパラメータを示しています。

表62-10 ドキュメント・マネージャ・ポートレット・パラメータ

パラメータ

説明

connectionName

WebCenterサービス・ポートレットによって使用されるOracle Content Server接続の名前。値が選択されない場合、アプリケーション開発者または管理者が指定したデフォルトの接続が使用されます。コンテンツ・リポジトリ接続の構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のコンテンツ・リポジトリの登録に関する項を参照してください。

デフォルト: アプリケーション開発者によって「コンテンツ・リポジトリ接続の作成」ダイアログ・ボックスのデフォルトとして選択されている接続。これは管理者が変更できます。

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'}

62.11.4.3 ディスカッション・フォーラム・ポートレット・パラメータ

表62-11は、ドキュメント・フォーラム・ポートレットに使用できる追加のパラメータを示しています。

表62-11 ディスカッション・フォーラム・ポートレット・パラメータ

パラメータ

説明

categoryId

ビューをスコープ設定するWebCenterポータルのディスカッション・サーバーの既存のカテゴリの識別子。

値が指定されない場合、デフォルトのディスカッション・サーバーの適切なルート・カテゴリとなります。(このルート・カテゴリIDは、接続でapplication.root.category.idという名前の追加のプロパティを指定することによってオーバーライドできます。)

ディスカッション・サーバー管理者インタフェースを使用して、テスト目的でカテゴリを作成し、ここでそのカテゴリ識別子を参照することもできます。

forumId

人気のあるトピックをフェッチするディスカッション・サーバーの既存のフォーラムの識別子。

categoryIdとforumIdの両方が指定されている場合、categoryIdのみが有効になります。

showRecursiveForums

アウトレットで、フォーラムがカテゴリのみに表示されるかサブカテゴリに表示されるかを決定します。

trueは、特定のカテゴリ/サブカテゴリの下のすべてのフォーラムが表示されることを意味しています。また、falseは、カテゴリの直接の子フォーラムのみが表示されることを意味しています。デフォルト値はfalseです。

注意: trueの場合、パフォーマンスに影響を及ぼす可能性があります。

isCategoryView

フォーラムがカテゴリIDカテゴリの下にグループ化されるか、トピックがフォーラムIDフォーラムの下にグループ化されるかを決定します。

trueは、ポートレットがcategoryIdの下に分類されたフォーラムを表示することを意味し、falseは、ポートレットが、指定されたforumIdと関連付けられたトピックを表示することを意味します。デフォルト値はfalseです。

このパラメータは、他のパラメータと組み合されて機能します。

62.11.4.4 ブログ・ポートレット・パラメータ

表62-12は、ブログ・ポートレットに使用できる追加のパラメータを示しています。

表62-12 ブログ・ポートレット・パラメータ

パラメータ

説明

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です。

62.11.4.5 リスト・ポートレット・パラメータ

リスト・ポートレットには、追加のパラメータは含まれていません。

62.11.4.6 投票マネージャ・ポートレット・パラメータ

表62-13は、投票マネージャ・ポートレットに使用できる追加のパラメータを示しています。

表62-13 投票マネージャ・ポートレット・パラメータ

パラメータ

説明

showUserDataOnly

すべての投票を表示するのか、そのユーザーによって作成された投票のみを表示するのかを決定します。デフォルト(No)では、すべての投票が表示されます。

Yesに設定すると、そのユーザーによって作成された投票のみが表示されます。

62.11.4.7 投票の実施ポートレット・パラメータ

表62-14は、投票の実施ポートレットに使用できる追加のパラメータを示しています。

表62-14 投票の実施ポートレット・パラメータ

パラメータ

説明

pollId

表示する投票のID。

62.11.4.8 お知らせポートレット・パラメータ

表62-15は、お知らせポートレットに使用できる追加のパラメータを示しています。

表62-15 お知らせポートレット・パラメータ

パラメータ

説明

parentId

お知らせオブジェクトが維持されるディスカッション・サーバー内のフォーラムID。各アプリケーションは、ディスカッション・サーバーにフォーラムを作成する必要があります。そのフォーラムID、たとえば${2}をここに入力します。

このパラメータが指定されていない場合は、お知らせはデフォルトのグローバルなお知らせになります。

62.11.4.9 メール・ポートレット・パラメータ

表62-16は、メール・ポートレットに使用できる追加のパラメータを示しています。

表62-16 メール・ポートレット・パラメータ

パラメータ

説明

tabularView

EL値タイプを使用して、trueの値を入力すると、件名、送信元、送信日付など、メール・メッセージに関連付けられた情報が表形式で表示されます。このパラメータをfalseに設定すると、メール・メッセージはリスト・ビューでレンダリングされます。

62.11.4.10 アクティビティ・ストリーム・ポートレット・パラメータ

表62-17は、アクティビティ・ストリーム・ポートレットに使用できる追加のパラメータを示しています。

表62-17 アクティビティ・ストリーム・ポートレット・パラメータ

パラメータ

説明

advancedQuery

ストリームされたアイテムをフィルタ処理するためのカスタム問合せを指定するためのフィールド。

詳細は、第39.3項「アクティビティ・ストリームの詳細な問合せオプションに関する必要な知識」を参照してください。

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サービスはアクティビティをストリームしません。

62.11.4.11 タグ・クラウド・ポートレット・パラメータ

タグ・クラウド・ポートレットには、追加のパラメータは含まれていません。

62.11.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で編集」オプションは、ドキュメント・マネージャ・ポートレットの「ファイル」メニューから使用できません。

- ドキュメント・マネージャまたはブログのポートレットの「リンクの取得」オプションからリンクを使用する場合、新しいブラウザ・セッションでそのリンクを開く必要があります。ポートレットを現在実行しているものと同じブラウザ・セッションの新しいタブでリンクを開くことはできません。

- 「ファイル」メニューからアクセスする「サブスクライブ」オプションは、ドキュメント・マネージャまたはブログのポートレットではサポートされていません。

- ブログ・ポートレットでブログを表示するときは、「共有」オプションを「編集」メニューから使用することはできません。

62.11.6 WebCenterサービス・ポートレットでの問題のトラブルシューティング

この項では、WebCenterサービス・ポートレットの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

この項には、次のトラブルシューティング項目が含まれています。

- 第62.11.6.1項「お知らせまたはディスカッション・フォーラム・ポートレットの外部リンクが機能しない」

- 第62.11.6.2項「ドキュメント・マネージャおよびブログのポートレットの「リンクの取得」オプションが機能しない」

- 第62.11.6.3項「ドキュメント・マネージャおよびブログのポートレットの「推奨」タブが空である」

- 第62.11.6.4項「ブログにイメージを埋め込めない」

- 第62.11.6.5項「「ブログ投稿」または「Wiki」でのリンクの作成時に選択したテキストが失われる」

62.11.6.1 お知らせまたはディスカッション・フォーラム・ポートレットの外部リンクが機能しない

問題

お知らせまたはディスカッション・フォーラム・ポートレットの外部Webページへのリンクをユーザーがクリックしても、何も表示されません。

原因

WebCenterサービス・ポートレットは、インライン・フレーム内に表示されます。たとえばGoogleなど、いくつかのWebサイトは、親フレームが同じオリジナルを持っていない場合、インライン・フレーム内に表示されません。したがって、お知らせまたはディスカッション・フォーラム・ポートレット内でこれらのWebサイトの1つにリンクする場合、リンクは表示されません。

解決方法

お知らせまたはディスカッション・フォーラム・ポートレットから外部Webページにリンクする場合、新しいブラウザ・タブまたはウィンドウにターゲットを表示することをお薦めします。これを行うには、リンクにtarget="_blank"属性を追加します。例:

<a href="http://www.google.com" target="_blank">Google</a>

62.11.6.2 ドキュメント・マネージャおよびブログのポートレットの「リンクの取得」オプションが機能しない

問題

Oracle WebCenter Interactionでドキュメント・マネージャまたはブログのポートレットを消費する場合、「表示」メニューの「リンクの取得」オプションから提供されるリンクが、Microsoft Internet Explorerで機能しません。

Oracle WebCenter Interactionの原因

Oracle WebCenter Interactionは、ページレット・プロデューサを介してWebCenterサービス・ポートレットにアクセスします。したがって、Oracle WebCenter InteractionのページでWebCenterサービス・ポートレットを消費する場合、ポートレットの基盤となっているページレットには、injectpagelet JavaScriptコールを使用してアクセスします。これにより、そのポートレット内のリンクが、URLに対するInternet Explorerの2KBの制限を超えることがあります。

解決方法

Oracle WebCenter Interactionでは、ページ上にドキュメント・マネージャまたはブログのポートレットを直接配置するかわりに、HTMLポートレットを作成してドキュメント・マネージャまたはブログのページレットをコールします。ページにHTMLポートレットを追加すると、そのページレットはインライン・フレームで参照され、それによって、Internet Explorerの2KBの制限を超える可能性が低い短いURLになります。

たとえば、ドキュメント・マネージャ・ポートレットをページに直接追加する場合、そのページレットへのコールは次のようになります。

<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>

62.11.6.3 ドキュメント・マネージャおよびブログのポートレットの「推奨」タブが空である

問題

ドキュメント・マネージャおよびブログのポートレットの「推奨」タブに、推奨がリストされません。

原因

WebCenterサービス・ポートレットでは、推奨はサポートされていません。

解決方法

ドキュメント・マネージャおよびブログのポートレットから「推奨」タブを削除するには、そのポートレットを編集し、featureOffパラメータをrecommendationsに設定します。

62.11.6.4 ブログにイメージを埋め込めない

問題

Oracle WebCenter Interactionでブログ・ポートレットを消費する場合、イメージをブログ・ポストに埋め込めません。

原因

イメージのファイル名が長い(たとえば250文字以上など)場合、ブログのイメージに使用されるリソースURLの長さが、サポートされている制限を超えることがあります。

解決方法

イメージ・ファイル名の長さを減らします。

かわりに、Oracle WebCenter InteractionでWebCenterサービス・ポートレットを消費するときは、ポートレットをHTMLポートレット内に配置することをお薦めします。詳細は、第62.11.6.2項「ドキュメント・マネージャおよびブログのポートレットの「リンクの取得」オプションが機能しない」を参照してください。

62.11.6.5 「ブログ投稿」または「Wiki」でのリンクの作成時に選択したテキストが失われる

問題

ブログ・ポストまたはWikiでテキストを選択し、「リソースの選択」または「新規リソース」アイコンをクリックしてリンクを作成すると、選択したテキストが表示されなくなります。

原因

選択したテキストは、リンクの作成中は一時的に挿入カーソルに置き換えられています。

解決方法

アクションは不要です。リンクの作成を終了するか、その操作を取り消すと、選択したテキストがリストアされます。

62.12 ポートレットのトラブルシューティング

この項では、ポートレットの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。次のサブセクションが含まれます:

- 第62.12.1項「ポートレットをトラブルシューティングするための診断ツール」

- 第62.12.2項「ポートレット・ログ・ファイルの構成」

- 第62.12.3項「ポートレットにポートレット・コンシューマ・エラーが表示される」

- 第62.12.4項「ポートレットにポートレット・タイムアウトが表示される」

- 第62.12.5項「ポートレットにリモート・ポートレット・コンシューマ・エラーが表示される」

- 第62.12.6項「ポートレットにリモート・ポートレット・エラーが表示される」

62.12.1 ポートレットをトラブルシューティングするための診断ツール

コンシューマとプロデューサの両方で使用できる、ポートレットでの問題の識別および解決に役立つ一連のツールがあります。

ポートレットをレンダリングするときにポートレット・エラー・メッセージが表示される場合、またはポートレットが表示されるがそれと適切に対話できない場合、その問題を診断するために従う必要があるこれらのツールの一般的な使用手順があります。

この項には次のサブセクションが含まれます:

- 第62.12.1.1項「ポートレット・インスタンスの識別」

- 第62.12.1.2項「ポートレット・コンシューマ・テスト・ページの調査」

- 第62.12.1.3項「プロデューサ・テスト・ページの調査」

62.12.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 Application Server管理者ガイド』の複数のログ・ファイルとコンポーネントにわたるメッセージの関係付けに関する項を参照してください。

注意:

破損しているポートレットは、2つのECIDを示します。1つはエラーが発生したリクエストに対するもの、1つはエラーが報告されたリクエストに対するものです。インライン・ポートレット(つまり、IFRAME内に表示されないポートレット)の場合、これらの2つのECIDは同じです。

IFRAMEポートレット(たとえば、Oracle JSF Portlet Bridgeポートレット)の場合、ECIDは異なります。これは、元の例外が発生したものより後のリクエストでエラーが報告されるためです。ログを確認するときは、どちらのECIDにも関連情報が含まれている可能性があるため、両方のECIDを調べます。

図portlet_debug.gifの説明

この情報を後続の診断手順で使用して、問題の特定に役立てることができます。

注意:

ポートレット診断情報に表示されるECIDは、ポートレット・プロデューサに対して(ポートレット・コンシューマ・リソース・プロキシを使用して)行われた部分ページ・レンダリング・リクエストを反映していません。これらのリクエストによって、ポートレットが更新される場合がありますが、ポートレット診断情報にECIDは記録されません。これらのリクエスト中に発生するエラーは、プロデューサで記録され、コンシューマ上のポートレット・リソース・プロキシによって記録されますが、ポートレット診断情報で報告されるECID情報を使用して、関連するログ・エントリのECIDを判別するために役立てることはできません。

3. ポートレットのデバッグを終了したら、次のコマンドを入力して、ポートレット・デバッグ情報を非表示にします。

javascript:portletDebugHide()

ヒント:

Internet ExplorerおよびGoogle Chromeでは、このコマンドを場所フィールドに入力する必要があります。このコマンドをフィールドに貼り付けた場合、javascriptの部分が削除されます。

Firefox 6以上の場合、場所フィールドにJavaScriptを入力できません。このコマンドをJavaScriptコンソールに入力する必要があります。

62.12.1.2 ポートレット・コンシューマ・テスト・ページの調査

ポートレット・エラーの診断における次の手順は、ポートレット・コンシューマ・テスト・ページ(図62-2に示す)にアクセスして、ポートレット・プロデューサを見つけ、必要に応じてそのポートレットを分離してテストすることです。

図62-2 ポートレット・コンシューマ・テスト・ページ

「図62-2 ポートレット・コンシューマ・テスト・ページ」の説明

ポートレット・コンシューマ・テスト・ページには、次3つのタブがあります。

- プロデューサ: このタブには、コンシューマ・アプリケーションに登録されているすべてのプロデューサがリストされます。1つのプロデューサを選択すると、そのプロデューサに関する具体的な情報が提供されます。

- 健全性チェック: このタブには、コンシューマ・アプリケーション開発者によって構成された、コンシューマ・アプリケーション内で実行できるポートレット・インスタンスと必須パラメータの事前定義済セットが含まれている場合があります。これらのポートレット内の障害はすべて、対応するプロデューサまたはポートレット、あるいはその両方での問題を示しています。

- 構成: このタブで、ポートレットの消費のためのコンシューマ構成エントリを識別できます。これらの値は、アプリケーション内に格納されているため変更できません。それらは参照目的でのみ表示されています。

ポートレット・コンシューマ・テスト・ページにアクセスした後、さらに診断手順を実行できます。

この項には、ポートレット・コンシューマ・テスト・ページを使用してポートレットの問題を診断するための次の内容が含まれています。

- 第62.12.1.2.1項「ポートレット・コンシューマ・テスト・ページへのアクセス」

- 第62.12.1.2.2項「ポートレット・プロデューサを見つける」

- 第62.12.1.2.3項「ポートレット・インスタンスを見つけて実行する」

- 第62.12.1.2.4項「健全性チェックの実行」

- 第62.12.1.2.5項「コンシューマ構成エントリのチェック」

62.12.1.2.1 ポートレット・コンシューマ・テスト・ページへのアクセス

ポートレット・コンシューマ・テスト・ページには、ポートレット・コンシューマに関する診断情報が表示されます。

ポートレット・コンシューマ・テスト・ページにアクセスするには:

1. ブラウザで、ポートレット・コンシューマ・テスト・ページのURLを入力します。

http://host:port/context-root/faces/oracle/portlet/client/adf/diagnostic/pages/ConsumerTestPage.jspx

注意:

コンシューマ・アプリケーションがセキュリティで保護されている場合、ポートレット・コンシューマ・テスト・ページには、それらのページを表示する権限を持つユーザーのみがアクセスできます。

2. 後続の項で説明するように、ポートレット・コンシューマ・テスト・ページで、さらに診断手順を実行できます。

62.12.1.2.2 ポートレット・プロデューサを見つける

ポートレット・コンシューマ・テスト・ページの「プロデューサ」タブには、そのコンシューマ・アプリケーションに登録されたすべてのプロデューサがリストされます。アプリケーション内のポートレット・インスタンスによってエラー・メッセージが表示される場合、そのポートレットを所有するプロデューサに関する情報を、このタブでそれを選択することで表示できます。

ポートレット・プロデューサを見つけるには:

1. ポートレット・コンシューマ・テスト・ページで、エラーを報告しているポートレット・インスタンスを所有するポートレット・プロデューサを選択します。
この情報は、第62.12.1.1項「ポートレット・インスタンスの識別」で書き留めました。

2. 次の情報が、選択したプロデューサに対して提供されます。

- プロデューサ・テスト・ページ: 「プロデューサ・テスト・ページ」へのリンク。

- 構成: 使用しているプロデューサに関連するスキン、セキュリティ、およびタイムアウトに関する可能性のある問題の詳細。

- 提供されるポートレット: プロデューサによって提供されるすべてのポートレットのリスト。リストされる提供されるポートレットがない場合、プロデューサの登録メタデータに問題があることを示しています。

- ポートレット・インスタンス: コンシューマ・アプリケーション内の選択されたプロデューサに対するすべてのポートレット・インスタンスのリスト。リストが空の場合もあります。

この情報を使用して、プロデューサでの可能性のある問題を識別できます。

62.12.1.2.3 ポートレット・インスタンスを見つけて実行する

依然としてポートレット・エラーの原因を特定できない場合は、ポートレット・インスタンス自体に問題がある可能性があります。

ポートレット・インスタンスを見つけて実行するには:

1. ポートレット・コンシューマ・テスト・ページで、エラーを報告しているポートレット・インスタンスを所有するポートレット・プロデューサを選択します。
この情報は、第62.12.1.1項「ポートレット・インスタンスの識別」で書き留めました。

2. 「ポートレット・インスタンス」の下で、ポートレット・インスタンスを選択して、「コンシューマ・テスト・ページ: ポートレット」ページを表示します。
この情報は、第62.12.1.1項「ポートレット・インスタンスの識別」で書き留めました。

図portlet_test_page.pngの説明

3. 「ポートレット・コンシューマ・テスト・ページ: ポートレット」ページでは、スタンドアロン・ページとしてポートレットがレンダリングされます。このページでポートレットが適切に実行される場合、問題は、破損しているポートレットが含まれているページ上の他のコンポーネントが原因である可能性が高いです。

4. 「パラメータ」セクションでは、拡大またはフロー・レイアウトを使用するとポートレットがどのように表示されるのか実験することができます。

5. ポートレットにパラメータが含まれている場合、「パラメータ」セクションに、そのポートレットのすべてのパブリック・パラメータがリストされます。任意のパラメータに対して値を入力し、ポートレットがパラメータを適切に受け取っているかテストします。

6. ポートレット・コンシューマ・テスト・ページに戻るには、そのページの最上部にあるプロデューサ名リンクをクリックします。

62.12.1.2.4 健全性チェックの実行

ポートレット・コンシューマ・テスト・ページの健全性チェック・タブ(図62-3に示す)には、すべてのプロデューサにわたるアプリケーション内のポートレット通信の状態の概要が表示されます。

図62-3 健全性チェック・タブ

「図62-3 健全性チェック・タブ」の説明

健全性チェック・タブは、コンシューマ・アプリケーション内で使用されるポートレット・インスタンスを参照します。このリストは、含めるポートレットとこれらのポートレットに渡すパラメータを選択したアプリケーション開発者によって構成されています。

このページのチェックによってUIに出力がレンダリングされることはありませんが、秘密裏にポートレットの実行可能なインスタンスが単に作成され、例外がポートレットによって返される場合は障害が報告されます。

健全性チェックを実行するには:

1. ポートレット・コンシューマ・テスト・ページで、健全性チェック・タブをクリックします。

2. テストするポートレットの横にある「チェック」リンクをクリックします。
健全性テストの結果は「ステータス」列に表示されます。

3. リストされているプロパティすべてで健全性チェックを実行するには、「すべての健全性チェックを実行」リンクをクリックします。

62.12.1.2.5 コンシューマ構成エントリのチェック

ポートレット・コンシューマ・テスト・ページの「構成」タブ(図62-4に示す)で、ポートレットの消費のためのコンシューマ構成エントリを識別できます。このタブには、adf-config.xmlファイルで定義されている設定(たとえば、最小および最大タイムアウト値およびコンシューマ・バージョン番号)が表示されます。これらの値は、アプリケーション内に格納されているため変更できません。それらは参照目的でのみ表示されています。

図62-4 「構成」タブ

「図62-4 「構成」タブ」の説明

62.12.1.3 プロデューサ・テスト・ページの調査

コンシューマ・アプリケーションでエラーの原因を特定できない場合、次の手順は、プロデューサ・テスト・ページ(図62-5に示す)を使用して、ポートレット・プロデューサ・アプリケーションでの可能性のある問題を識別することです。

図62-5 プロデューサ・テスト・ページ

「図62-5 プロデューサ・テスト・ページ」の説明

メイン・プロデューサ・テスト・ページへのアクセスはパブリックですが、各ポートレットのテスト・ページへのリンクには、基礎となっているページおよびタスク・フローに対する権限を付与されているユーザーのみがアクセスできます。

プロデューサ・テスト・ページには、次の5つのセクションがあります。

- ポートレット
プロデューサ内のすべてのポートレットのリスト。Oracle JSF Portlet Bridgeポートレットの場合、各ポートレットは、サーブレットとしてそのポートレットを実行するための個別のリンクも提供します(これは、それらをポートレットとして実行するための前提条件です。ポートレットがサーブレットとして実行されない場合、それはポートレットとして実行できません)。

- コンテナ構成
コンシューマ・プリファレンス情報が格納される場所に関する情報。

- コンテナ・バージョン
ポートレット・プロデューサ・コンテナのバージョン番号。

- WSDL URL
登録に使用するWeb Service Definition Language (WSDL)ドキュメントへのリンク。

- SOAPモニター
WSRP SOAPモニターへのリンク。それによって、MonitorまたはAdminロールを持つユーザーは、コンシューマとプロデューサとの間のSOAPメッセージを追跡できます。

プロデューサ・テスト・ページにアクセスした後、さらに診断手順を実行できます。

この項には次のサブセクションが含まれます:

- 第62.12.1.3.1項「プロデューサ・テスト・ページへのアクセス」

- 第62.12.1.3.2項「サーブレットとしてのJSFポートレットの実行」

- 第62.12.1.3.3項「SOAPモニターの調査」

62.12.1.3.1 プロデューサ・テスト・ページへのアクセス

プロデューサ・テスト・ページには、ポートレット・プロデューサに関する診断情報が表示されます。

プロデューサ・テスト・ページにアクセスするには:

1. ブラウザで、プロデューサ・テスト・ページのURLを入力します。

http://host:port/context-root/info

2. 後続の項で説明するように、プロデューサ・テスト・ページで、さらに診断手順を実行できます。

62.12.1.3.2 サーブレットとしてのJSFポートレットの実行

Oracle JSF Portlet Bridgeポートレット・プロデューサが適切に実行されていることを確認するには、最初に標準HTTPリクエストを介してプロデューサ・アプリケーションが適切に実行されていることを確認する必要があります。プロデューサによってポートレットとして公開されるアーティファクトが、サーブレットとして実行されていない場合、それらはポートレットとして実行されません。

JSFポートレットをサーブレットとして実行するには:

1. プロデューサ・テスト・ページで、ポートレットの横にある「サーブレットとして実行」リンクをクリックします。

2. そのポートレットは、基礎となっているページまたはタスク・フローをリクエストする標準HTTPを使用してコールされます。リクエストの結果は、新しいブラウザ・ウィンドウに表示されます。
結果のページまたはタスク・フローが適切にレンダリングされない場合、プロデューサ・アプリケーションに、ページまたはタスク・フローをポートレットとして実行する前に解決する必要がある問題があります。

3. ポートレットがパラメータを取る場合、「パラメータの表示」をクリックして、それらをリストし、値を指定します。「サーブレットとして実行」をクリックすると、ポートレット・コールにそのパラメータ値が含められます。

62.12.1.3.3 SOAPモニターの調査

SOAPモニターは、ポートレットをレンダリングするときのコンシューマとプロデューサとの間のSOAPリクエストへのアクセスを提供します。これは、通信レベルでの問題の診断にとても役立ちます。

SOAPモニターを調査するには:

1. プロデューサ・テスト・ページで、ページの下部にあるSOAPモニター・リンクをクリックします。

2. プロンプトが表示されたらユーザー名とパスワードを入力します。

注意:

SOAPモニターにアクセスするには、アイデンティティ管理システムのMonitorsまたはAdministratorsロールのメンバーであることが必要です。

3. デフォルトでは、SOAPモニターは無効化されているため、そのページは空です。最初に、ページの最上部にある「有効化」リンクをクリックすることでモニターを有効化する必要があります。

4. ページは自動的にリフレッシュされないため、SOAPメッセージを表示するには、「リフレッシュ」リンクをクリックする必要があります。

5. 障害が発生しているポートレットに対してリクエストを強制するには、そのポートレットの「ポートレット・コンシューマ・テスト・ページ: ポートレット」ページに移動し、「ポートレットのリフレッシュ」を選択します。

6. ポートレットがレンダリングされたか失敗したときに、SOAPモニターの「リフレッシュ」リンクをクリックし、取得されたリクエストを表示します。
図portlet_soap_monitor.pngの説明

7. これで、送信されたSOAPメッセージとそのレスポンスを調査して、問題の原因の絞込みを試みることができるようになりました。

注意:

ポートレットを再実行してSOAPモニターをリフレッシュした後に、メッセージがなにも表示されない場合、それは、プロデューサとコンシューマの間にセキュリティの問題がある可能性を示しています。プロデューサとコンシューマが通信するために適切なWS-Security設定が設定されていることを確認する必要があります。

62.12.2 ポートレット・ログ・ファイルの構成

ポートレットの問題をトラブルシューティングするには、ポートレット・ログハンドラおよびロガーを、ロギング構成ファイルlogging.xmlに追加すると便利です。

例62-18は、ポートレット・ログハンドラおよびロガーの追加方法を示しています。この例では、コンシューマおよびプロデューサのアプリケーションが同じWebLogic Serverインスタンス上で実行されていると想定します。異なるインスタンスでコンシューマおよびプロデューサのアプリケーションを実行している場合は、それらを適切に分割する必要があります。

注意:

ファイルの終わりにログ・エントリを追加すると、シードされた設定がそれらによってオーバーライドされるようになります。

例62-18 ポートレットの問題をトラブルシューティングするためのログ・ファイルの構成

<!-- 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

62.12.3 ポートレットにポートレット・コンシューマ・エラーが表示される

メッセージ「ポートレット・コンシューマ・エラー」(図62-6に示す)は、通常、エラーが、ポートレット・コンシューマ・アプリケーションのポートレット部分の操作内で発生したことを示します。

図62-6 ポートレット・コンシューマ・エラーが表示されているポートレット

「図62-6 ポートレット・コンシューマ・エラーが表示されているポートレット」の説明

問題

エラーは、ポートレット・コンシューマ・アプリケーションのポートレット部分の操作内で発生しました。つまり、エラーは、リモート・ポートレット・プロデューサ・アプリケーションには関係ありません。

解決方法

診断ログ・ファイルを調べて、例外の原因を判別します。

DebugErrorRendererが有効化されている場合、原因例外が、ログ・ファイルへのリンクとともにポートレット内に表示されます。本番モードで実行している場合は、コンシューマ側のログを参照してください。

エラー・メッセージが表示される原因となった例外が記録されています。可能な場合は、メッセージは、例外スタックの先頭でログに含められ、例外がどのポートレット・バインディングに対して発生したかを示します。例62-19は、ポートレット・エラーに対して記録されたメッセージを示しています。

例62-19 ポートレット・エラーに対して記録されるメッセージの例

<PortletRenderer> <setErrorState> An error has occured for Portlet Binding
portlet1.
oracle.portlet.client.container.PortletContentTypeException: Unexpected content
type "null" in WSRPGetMarkup response.
...

スタック内の原因例外に特に注意してください。これが、元になっている実際の問題が何かを示している可能性があります。

原因は、内部エラーである可能性が高く、適切な対処方法は、Oracleサポートに連絡することです。

62.12.4 ポートレットにポートレット・タイムアウトが表示される

ページのポートレットが表示されることが期待されている領域に「ポートレット・タイムアウト」が表示される場合(図62-7に示す)は、構成済の時間だけ、コンシューマはプロデューサのレスポンスを待機したが、その時間中にレスポンスがなかったか、レスポンスがその時間中に完了しなかったことを意味します。原因はいくつか考えられます。

図62-7 ポートレット・タイムアウト・エラーが表示されているポートレット

「図62-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ファイルのポートレット・セクションで、ポートレット・タイムアウトの最小、最大およびデフォルト値をアプリケーション全体にわたって構成できます。最大タイムアウトによって、ポートレット・プロデューサによって指定されるタイムアウトの上限が設定されるため、最大タイムアウトが短すぎると、プロデューサ接続で指定したタイムアウトが長い場合でも、予期しないポートレット・タイムアウト・エラーが発生することがあります。

62.12.5 ポートレットにリモート・ポートレット・コンシューマ・エラーが表示される

画面のセクションに「リモート・ポートレット通信エラー」メッセージ(図62-8に示す)が表示され、その周囲に、それ以外の場合は空白のリージョンがある場合は、その領域はポートレットが表示されることが予期されており、アプリケーションとそれとのやり取りができていません。

図62-8 「リモート・ポートレット通信エラー」を表示するポートレット

「図62-8 「リモート・ポートレット通信エラー」を表示するポートレット」の説明

問題1

プロデューサが停止しています。

解決策1

プロデューサ・アプリケーションが実行されていないか、それがデプロイされている管理対象サーバーが起動されていない可能性があります。この場合、起動する必要があります。ポートレット障害が発生した時点で試みていたタスクに基づいて起動する必要があるアプリケーションを特定します。

問題2

Webサービス・セキュリティが不適切に構成されています。

解決策2

Webサービス・セキュリティのトラブルシューティング手順は、使用しているセキュリティ・プロファイルのタイプ(たとえば、AuthN、SSLまたはMessage Security)に応じて異なります。

Webサービス・セキュリティのトラブルシューティングの詳細は、『Oracle Application Server Web Servicesセキュリティ・ガイド』の問題の診断に関する項を参照してください。

問題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

62.12.6 ポートレットにリモート・ポートレット・エラーが表示される

ポートレットで「リモート・ポートレット・エラー」 (図62-9に示す)が表示される場合、これはプロデューサがそのエラー・メッセージでレスポンスしたことを示しています。エラー・メッセージは、レスポンス・ドキュメント内のSOAPフォルト・メッセージの形式で返されます。プロデューサがエラーを返す理由はいくつかあります。これらのエラーを診断する最適な方法は、最初にコンシューマ診断ログ内の対応する例外スタック・トレースを見つけることです。このスタック・トレースは、プロデューサによって返されたフォルトの種類と、レスポンスに必要な詳細情報を示します。発生する可能性があるいくつかの障害は、後続の項でリストします。

図62-9 「リモート・ポートレット・エラー」を表示するポートレット

「図62-9 「リモート・ポートレット・エラー」を表示するポートレット」の説明

問題1

OperationFailedException。これは、最も一般的なタイプの「リモート・ポートレット・エラー」であり、プロデューサ・アプリケーション内で発生した未対応の例外に対する包括的なものです。

解決策1

OperationFailedExceptionを解決するには、コンシューマ診断ログで例外を調べます。これは、通常、最後のCaused by例外としてフォルト・レスポンスをトリガーするプロデューサ・アプリケーションで発生した例外を示します。

必要に応じて、詳細やそのフォルトがトリガーされる前に発生した関連する例外についてプロデューサ・アプリケーションの診断ログを調査できます。場合によっては、プロデューサ・ログの例外が、データベース接続障害や構成の問題など、簡単に解決できる問題を示していることもあります。ほかに、例外が製品バグを示していることもあります。

問題2

InvalidRegistrationException。このエラーは、コンシューマがプロデューサとの通信を試みる前に、そのプロデューサがコンシューマに適切に登録されていなかったことを示します。これは、コンシューマが登録した後に、プロデューサのプリファレンス・ストアが移動されたか削除された場合にも発生することがあります。

解決策2

最も可能性が高い原因は、プロビジョニング中の問題です。プロデューサ・アプリケーションのweb.xmlファイル設定を確認して、例62-20に示すエントリが存在していることも確認する価値はあります。

例62-20 web.xmlの永続ストア設定

<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>

問題3

InvalidHandleException。これは、コンシューマがプロデューサに、プロデューサが認識していないポートレット・インスタンスをレンダリングするか、それと対話するように求めたことを示しています。これは、ポートレットがそのページに追加された後に、なんらかの方法で、プロデューサのプリファレンス・ストアが壊れた場合にも発生することがあります。

解決策3

このエラーの原因として最も可能性が高いのは、プロビジョニング中の問題か、解決策2に示すようにweb.xmlファイルのpersistentStore設定の欠落てす。

問題4

AccessDeniedException。これは、プロデューサ・アプリケーションによって、現在のユーザーが、問題のポートレットまたはタスク・フローへのアクセス権を持っていないと判断されたことを示します。

解決策4

これは、正当なエラー・メッセージであるか構成の問題を示しているかのいずれかの可能性があります。多くの場合、WebCenter Portalでは、ポートレット・リモート・エラーが表示されることなく、認可エラーは正常に処理されます。

63 OmniPortletを使用したポートレットの作成

OmniPortletは、設計時にアプリケーションに追加し、実行時にカスタマイズするデータ公開ポートレットです。実行時にウィザードベースで操作できるようになるため、ページ設計者は、SQL、XML、Webサービス、スプレッドシート、Webページなどの様々なデータ・ソースのデータを、カスタマイズ可能なチャートや表などの様々なレイアウトで公開できます。

この章では、OmniPortletをOracle JDeveloper環境で使用する予定である場合に役に立つ情報について説明します。OmniPortletウィザードの使用方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

この章には次の項が含まれます:

- 第63.1項「OmniPortletの概要」

- 第63.2項「アプリケーションへのOmniPortletの追加」

- 第63.3項「OmniPortletのカスタマイズ」

- 第63.4項「OmniPortlet構成のヒント」

- 第63.5項「OmniPortletの問題のトラブルシューティング」

OmniPortletの登録の詳細は、第62.3項「WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

注意:

様々な種類のポートレットの開発およびプロデューサと他のポートレット・テクノロジの詳細は、第57章「ポートレットの概要」を参照してください。

63.1 OmniPortletの概要

OmniPortletは、Oracle WebCenter Frameworkのサブコンポーネントで、これにより開発者は、コードを書くことなく、様々なレイアウトを使用して、各種データ・ソースのデータを簡単に公開できます。OmniPortletでは、Webサービス、SQLデータベース、スプレッドシート(値を特定の文字で区切ったもの)、XML、さらには既存のWebページのアプリケーション・データなど、ほとんどあらゆる種類のデータ・ソースを使用できます。図63-1に、OmniPortletを使用して作成したポートレットの例を示します。

図63-1 OmniPortletの例

「図63-1 OmniPortletの例」の説明

OmniPortletを使用すると、WebCenter Portal: Frameworkアプリケーション開発者およびコンポーネント開発者は、次のことができます。

- 複数ソース(CSV、XML、Webサービス、SQLなど)のデータの表示

- 表示するデータのソート

- 多様なレイアウト(箇条書きリスト、チャート、HTMLなど)を使用したデータの書式設定

- ポートレット・パラメータの使用

- ページ・ビューアへのパーソナライズ可能な設定の公開

パーソナライズされたデータを表示する場合は、データ・ソースから戻された結果をフィルタリングして、取得したデータを絞り込み、保護されたデータのアクセスに使用する資格証明情報をパラメータ化できます。OmniPortletには最初から、表、チャート、HTML、ニュース、箇条書きリストおよびフォームなど、最も一般的なポートレット用のレイアウトが用意されています。

63.2 アプリケーションへのOmniPortletの追加

第62章「ポートレットの消費」で説明しているように、OmniPortletは、Oracle JDeveloperで作成されたページに追加できます。OmniPortletは、Oracle JDeveloperとともにインストールされる統合WebLogic Server(統合WLS)に含まれています。統合WLSの起動後、「Oracle PDK-Javaプロデューサの登録」ウィザードを使用して、OmniPortletプロデューサを登録できます。このプロデューサが登録されると、Oracle JDeveloperの「リソース・パレット」または「アプリケーション・リソース」パネルでポートレットを使用できるようになります。たとえば、OmniPortletプロデューサをOmniProducerとして登録すると、図63-2に示すように、OmniPortletが「リソース・パレット」の「IDE接続」リストに表示されます。

図63-2 「リソース・パレット」のOmniPortlet

「図63-2 「リソース・パレット」のOmniPortlet」

注意:

詳細の参照先は、次のとおりです。

- プロデューサの登録は、第62.3項「WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。

- デフォルト・サーバーのインストール、初期化、停止、およびOracle JDeveloperによるポイントの詳細は、第3.4項「統合WebLogic Serverの使用」を参照してください。

- ページへのOmniPortletインスタンスの追加の詳細は、第62.6項「ページへのポートレットの追加」を参照してください。

ポートレット・プロデューサを登録したら、OmniPortletを*.jspxページにドラッグするだけです。

注意:

Oracle JDeveloperでOmniPortletのインスタンスをページに追加する際、ポートレットの「プロパティ・インスペクタ」を開き、AllModesSharedScreenプロパティとRenderPortletInIFrameプロパティが次のように設定されていることを確認します。

- AllModesSharedScreenは、「カスタマイズ」と「パーソナライズ」がフル・ページのサイズで表示されるようにFalseに設定されています。

- RenderPortletInIFrameは、表示モードでOmniPortletが独自のインライン・フレーム(IFRAME)に表示されるようにTrueに設定されています。

Oracle JDeveloperでのOmniPortletの構成の詳細は、第63.4項「OmniPortlet構成のヒント」を参照してください。

63.3 OmniPortletのカスタマイズ

設計時にOmniPortletをアプリケーションに追加しておくと、アプリケーションをブラウザで実行することにより、コンテンツ、レイアウトおよびその他のオプションをカスタマイズできます。この項では、実行時のカスタマイズに関する大まかな概要を説明します。このポートレットの使用およびカスタマイズ方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

注意:

OmniPortletの構成の詳細は、付録63「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: Spacesユーザーズ・ガイド』を参照してください。

63.4 OmniPortlet構成のヒント

この項では、OmniPortletの構成について説明します。OmniPortletウィザードの詳細は、第63章「OmniPortletを使用したポートレットの作成」を参照してください。この項には、次の領域の構成情報が含まれています。

- 第63.4.1項「ファイアウォール外のデータにアクセスするためのOmniPortletプロデューサの構成」

- 第63.4.2項「他のリレーショナル・データベースにアクセスするためのOmniPortletプロデューサの構成」

- 第63.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のシステム・ディレクトリのパスに空白があると、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

63.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プロキシ・ホストを使用している場合は表63-1、HTTPSプロキシ・ホストを使用している場合は表63-2に示すパラメータを設定します。

表63-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

プロキシ・サーバーのレルムの名前。レルムの名前がわからない場合は、プロキシ・サーバーの管理者に問い合せてください。

表63-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ファイルでプロキシ情報を構成するためのパラメータのリストとそれらの説明は、表63-3を参照してください。

表63-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>

63.4.2 他のリレーショナル・データベースにアクセスするためのOmniPortletプロデューサの構成

OmniPortlet SQLデータ・ソースは、OracleデータベースにはOracle JDBCドライバを使用して、ODBCデータ・ソースにはSun社のJDBC-ODBCドライバを使用してアクセスするように事前に構成されています。開発者は、DataDirect JDBCドライバを使用して他のリレーショナル・データベースにアクセスできます。

関連項目:

サポートされているデータベースのリストは、Oracle Technology Network (http://www.oracle.com/technetwork/index.html)で入手できるOracle Application ServerおよびDataDirect JDBCの動作保証マトリックスを参照してください。

この項の内容は、次のとおりです。

- 第63.4.2.1項「DataDirect JDBCドライバのインストール」

- 第63.4.2.2項「OmniPortletへのDataDirectドライバの登録」

63.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にコピーします。

63.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>

表63-4では、driverInfoプロパティのパラメータについて説明しています。

表63-4 driverInfoプロパティのパラメータ

パラメータ

説明

name

使用するデータベースの名前。この名前は、「OmniPortlet」ウィザードの「ソース」タブで使用されます。

sourceDataBase

内部値。値をotherに設定します。

subProtocol

接続文字列(sqlserver、sybaseまたはdb2など)の作成で、OmniPortletによって使用されるJDBCサブプロトコルの名前。サブプロトコル名のリストを取得するには、この項の最後にあるリンクを使用してDataDirect JDBCドライバのドキュメントを参照してください。

connectString

接続文字列の書式の説明。DataDirectドライバの場合、書式はmainProtocol:subProtocol://databaseNameです。

driverClassName

ドライバ・クラスの名前。様々な値を取得するには、この項の最後にあるリンクを使用して、DataDirect JDBCドライバのドキュメントを参照してください。

dataSourceClassName

接続プーリングを実装するデータ・ソース・クラスの名前。このパラメータは、OmniPortletリリース9.0.4.1以上でのみ使用可能です。使用するドライバの正しいデータ・ソース・クラス名は、表63-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

このデータ・ソースが、データベースへの接続を試みる間待機する最大時間(秒)。

表63-5では、特定のDataDirect JDBCドライバのdriverClassNameプロパティとdataSourceClassNameプロパティの値を示します。

表63-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ドライバの使用方法の詳細は、第63章「OmniPortletを使用したポートレットの作成」を参照してください。

63.4.3 PortalツールおよびWebプロデューサの構成(オプション)

ローカルにビルドされたOmniPortletプロデューサおよびカスタム・ビルドされたWebプロデューサが、中間層環境で適切に機能するようにするには、追加の構成が必要な場合があります。ファイル・システムでOmniPortletまたはその他のWebプロデューサがカスタマイズされている場合、PDK-Javaによって提供されているプリファレンス・ストア移行/アップグレード・ユーティリティを使用して、既存のカスタマイズをデータベースに移行し、前のリリースからカスタマイズをアップグレードできます。PDKプリファレンス・ストア移行ユーティリティの詳細は、第60.3.8.2項「PDK-Javaプロデューサの永続ストアの移行」を参照してください。

複数中間層環境でのPortalツール・プロデューサの構成

デフォルトでは、OmniPortletプロデューサはデータベースのプリファレンス・ストアを使用します。これは、追加の構成を必要とせずに複数の中間層環境で機能します。

第60.3.8.2項「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プリファレンス・ストア移行ユーティリティの詳細は、第60.3.8.2項「PDK-Javaプロデューサの永続ストアの移行」を参照してください。

2. 通常、ロード・バランシング・ルーター(LBR)を構成する前に、OmniPortletおよびWebクリッピングのHTTPプロキシ構成を実行します。LBRの構成後にこれを行う手順は、次のとおりです。

1. Portalツールの構成情報は、中間層サーバー上のprovider.xmlファイルに格納されています。1つの中間層(M1など)で構成を直接更新し、それをLBRがフロントエンド処理を行うすべての中間層に伝播する必要があります。最初に、M1以外の中間層をすべて停止する必要があります。

2. HTTPプロキシ設定をprovider.xmlファイルで変更できます。詳細は、第63.4.1項「ファイアウォール外のデータにアクセスするためのOmniPortletプロデューサの構成」を参照してください。

3. provider.xmlファイルに加えた変更を中間層M2に伝播します。

- OmniPortlet_WAR_DIR/WEB-INF/providers/omniPortlet/provider.xmlをM1からM2にコピーします。

- WebClipping_WAR_DIR/WEB-INF/providers/webClipping/provider.xmlをM1からM2にコピーします。

3. 中間層M2を再起動します。

4. Frameworkアプリケーションでポートレット・プロデューサ登録を更新します。プロデューサ登録URLの最初の部分をhttp://m1.abc.com:7777/からhttp://lbr.abc.com/に変更します。

5. OmniPortletプロデューサおよびWebクリッピング・プロデューサが、LBRを介して正常に機能することを、次のURLにあるテスト・ページに移動して確認します。

- OmniPortletプロデューサ: http://lbr.abc.com/portalTools/omniPortlet/producers/omniPortlet
OmniPortletプロデューサのテスト・ページで、「ポートレット情報」セクションに「使用可能なポートレットはありません」というメッセージが表示された場合、ステップ1でOmniPortletを正しく構成していない可能性があります。OmniPortletが正しく構成されている場合、「OmniPortlet」と「シンプル・パラメータ・フォーム」のポートレットがテスト・ページで利用できます。

- Webクリッピング・プロデューサ: http://lbr.abc.com/portalTools/webClipping/producers/webClipping

注意:

Webクリッピング・ポートレット、またはOmniPortletのWebページ・データ・ソースを使用するには、Oracle Web Cacheでセッション・バインディングを有効にすることも必要です。

63.5 OmniPortletの問題のトラブルシューティング

この項では、OmniPortletの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

注意:

OmniPortletプロデューサはFrameworkアプリケーションと異なる層に存在し、そこで実行され、セッション情報にはアクセスできないため、OmniPortletがアクセスできるように、XMLファイルをPUBLICとして公開する必要があります。

「定義」リンクを使用してOmniPortletを定義できない

実行時にOmniPortletを定義することはできません。

問題

OmniPortletは、trueのRenderPortletInIFrame値のみをサポートします。これはOmniPortletをIFRAME内でレンダリングする必要があることを意味します。したがって、OmniPortletプロパティRenderPortletInIFrameをtrueに設定する必要があります。「プロパティ・インスペクタ」で、RenderPortletInIFrameプロパティは、「表示オプション」の下にあります。

現時点では、RenderPortletInIFrameプロパティの値はfalseです。そのため、実行時に「定義」リンクをクリックしても、「タイプ」タブは表示されず、OmniPortletの定義を進めることができません。

解決方法

OmniPortletを定義するために、「処理」リストから「カスタマイズ」を選択するか、Oracle JDeveloperの「構造」ウィンドウでOmniPortletを選択して、RenderPortletInIFrameをtrueに設定します。

64 Webクリッピングを使用したコンテンツ・ベースのポートレットの作成

Webクリッピングは、WebCenter Portal: Frameworkアプリケーションに任意のWebアプリケーションを統合できるようにする公開ポートレットです。Webクリッピングは、Webアプリケーションの既存のユーザー・インタフェースを利用して迅速に統合できるように設計されています。Webクリッピングでは、Webコンテンツを単一の一元化したWebページのポートレットに収集できます。Webクリッピングを使用すると、大規模な組織に散在するWebサイトのコンテンツを統合できます。

この章には、WebクリッピングをOracle JDeveloper環境で使用するために知っておく必要がある情報が含まれています。実行時のWebクリッピングの使用方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のWebクリッピング・ポートレットの使用に関する項の章を参照してください。

この章には次の項が含まれます:

- 第64.1項「Webクリッピングの概要」

- 第64.2項「アプリケーションへのWebクリッピングの追加」

- 第64.3項「シングル・サインオンを使用した認証されているWebコンテンツの統合」

- 第64.4項「Webクリッピングの拡張機能」

- 第64.5項「Webクリッピング・ポートレット構成のヒント」

- 第64.6項「Webクリッピングに関する現在の制限」

- 第64.7項「Webクリッピングのトラブルシューティング」

様々なタイプのポートレット、プロデューサ、および他のポートレット・テクノロジの詳細は、第57章「ポートレットの概要」を参照してください。

注意:

Webクリッピング・ポートレットは、リリース11g (11.1.1.7.0)では非推奨になっています。Oracle WebCenter Portalのページレット・プロデューサを使用してクリップ・ページレットを使用することを検討してください。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracle WebCenter Portalのページレット・プロデューサの管理に関する項を参照してください。

64.1 Webクリッピングの概要

Webクリッピングを使用すると、Webページ全体または一部をクリップし、ポートレットとして再利用できます。基本およびHTMLフォームベースのサイトはクリップ可能です。Webクリッピングは、既存のWebページのコンテンツをコピーし、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ファイル内のレルムなど、プロキシ・サーバー認証の詳細を指定できます。また、ユーザー資格情報の入力スキームを指定することもできます。

- すべてのユーザーは、指定されたユーザー名とパスワードを使用して自動的にログインします。

- すべてのユーザーは、自ら設定したユーザー名とパスワードを使用してログインする必要があります。

- すべてのパブリック・ユーザー(Frameworkアプリケーションで未認証)は、指定されたユーザー名とパスワードを使用して自動的にログインしますが、有効なユーザー(Frameworkアプリケーションで認証済)は、自ら設定したユーザー名とパスワードを使用してログインします。

詳細は、第64.5.2項「HTTPまたはHTTPSのプロキシ構成」を参照してください。

- HTTPSのサポート
Webクリッピングを使用すると、適切なサーバー証明書を取得している場合に、HTTPSベースの外部Webサイトからコンテンツをクリップできます。サーバー証明書の詳細は、第64.5.3.1項「信頼できるサイトの証明書の追加」を参照してください。

- オープン・トランスポートAPI
デフォルトでは、Webクリッピング・プロバイダは、Basic、Digest、フォーム送信ログインなどのHTTPチャレンジベースの認証方式のみをサポートしています。Kerberosプロキシ認証などのカスタムの認証方式をサポートするには、Webクリッピング・トランスポートAPIを使用できます。詳細は、第64.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クリッピングが決定する方法の詳細は、第64.6項「Webクリッピングに関する現在の制限」を参照してください。

- Webクリッピングの定義の永続的な格納
Webクリッピングの定義は、リポジトリに永続的に格納されます。デフォルトでは、JDeveloperで、Webクリッピング・プロデューサがファイルベースのOracle Metadata Service (MDS)をリポジトリとして使用するように構成されています。必要に応じて、Webクリッピング・リポジトリにデータベース・スキーマを使用できます。Webクリッピング・リポジトリの構成の詳細は、第64.5.1項「Webクリッピング・リポジトリの構成」を参照してください。

- 保護情報の暗号化
パスワードなどの保護情報は、Oracleの暗号化テクノロジを使用し、Data Encryption Standard (DES)に基づいて暗号化されたフォームで格納されます。

64.2 アプリケーションへのWebクリッピングの追加

Webクリッピング・ポートレットは、JDeveloperを使用して作成されたJSPドキュメントに追加できます。Webクリッピング・ポートレット・プロデューサは、次のサーバーに組み込まれています。

- 統合WebLogic Server (WLS)、つまり、JDeveloperとともにインストールされるデフォルトのサーバー

- Oracle Fusion Middlewareの完全インストールのデフォルト・ドメインにあるWLS_Portlets管理対象サーバー

Webクリッピング・ポートレットをアプリケーションに追加するには:

1. JDeveloperで、統合WLSを起動します。詳細は、第3.4項「統合WebLogic Serverの使用」を参照してください。

2. JDeveloperで、Webクリッピング・プロデューサを登録します。詳細は、第62.3項「WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。
この手順では、たとえば次のようなエンドポイントURLを指定する必要があります。

http://localhost:7101/portalTools/webClipping/providers/webClipping

WLS_Portlets管理対象サーバーまたは統合WLSからWebクリッピング・ポートレット・プロデューサを登録することを選択できます。

プロデューサを登録すると、ポートレットが「アプリケーション・リソース」パネルや「リソース・パレット」で使用可能になります。

3. 「アプリケーション・リソース」パネルまたは「リソース・パレット」から、Webクリッピング・ポートレットを.jspxページにドラッグします。詳細は、第62.6項「ページへのポートレットの追加」を参照してください。
PanelCustomizableコンポーネントまたはShowDetailFrameコンポーネントを使用している場合は、af:formのかわりにそのコンポーネントの上にポートレットをドラッグします。「構造」ペインで、Webクリッピング・ポートレットは、PanelCustomizableコンポーネントまたはShowDetailFrameコンポーネントの下に表示されます。ページ・エディタで、ポートレットは、PanelCustomizableコンポーネントまたはShowDetailFrameコンポーネントの中に表示されます。

注意:

JDeveloperでWebクリッピングのインスタンスをページに追加する際、ポートレットの「プロパティ・インスペクタ」を開き、AllModesSharedScreenプロパティとRenderPortletInIFrameプロパティが次のように設定されていることを確認します。

- AllModesSharedScreenは、「カスタマイズ」と「パーソナライズ」がフル・ページのサイズで表示されるようにfalseに設定されています。このプロパティをfalseに設定していない場合、実行時にWebクリッピング・ポートレットを編集すると、ページ上に表示されるテキストが変形する可能性があります。

- RenderPortletInIFrameは、表示モードでWebクリッピングが独自のインライン・フレーム(IFRAME)に表示されるようにtrueに設定されています。

4. .jspxページを右クリックし、「実行」を選択します。
Webクリッピング・ポートレットがデフォルトのブラウザに表示されます。

5. Webクリッピング・ポートレットをカスタマイズしてそのコンテンツを定義します。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の章Webクリッピング・ポートレットの使用に関する項を参照してください。

注意:

SSL対応Webサイトをクリップするには、証明書ストアにそれらのサイトの証明書を追加する必要があります。Equifax、VeriSignまたはCybertrustの証明書を使用するSSL対応Webサイトの証明書は追加する必要がありません。これらの証明書は、デフォルトの証明書ストアに含まれています。

証明書の追加の詳細は、第64.5.3.1項「信頼できるサイトの証明書の追加」を参照してください。

64.3 シングル・サインオンを使用した認証されているWebコンテンツの統合

Oracle Single Sign-Onを利用して、認証に必要な外部WebサイトのコンテンツをWebクリッピング・ポートレットに統合できます。

注意:

1つのプロデューサに関連付けることができる外部アプリケーションは1つのみです。外部アプリケーションごとに新規のプロデューサを登録する必要があります。Frameworkアプリケーション・ユーザーは、資格情報ではなく、該当のシステムのユーザー名とパスワードを使用して認証されているコンテンツにアクセスします。

認証が必要な外部アプリケーションを統合するには:

1. JDeveloperでFrameworkアプリケーションを開きます。

2. 認証情報を指定して、外部アプリケーションを登録します。詳細は、第68.13.3.2.1項「外部アプリケーションのOracle JDeveloperでの登録」を参照してください。

3. Webクリッピング・プロデューサを登録します。詳細は、第62.3項「WebCenter Portal: FrameworkアプリケーションへのOracle PDK-Javaポートレット・プロデューサの登録」を参照してください。
Oracle PDK-Javaポートレット・プロデューサの登録ウィザードを使用してプロデューサを登録する際に、「接続詳細の指定」ページで、「プロデューサと外部アプリケーションとの関連付け」チェック・ボックスを選択し、値のリストから登録した外部アプリケーションを選択します。「プロデューサ・セッションの有効化」チェック・ボックスが自動的に選択されます。

図64-1は、Webクリッピング・プロデューサと関連付けられているMyOracleSupportという名前の外部アプリケーションを示しています。

図64-1 外部アプリケーションへのWebクリッピング・プロデューサの関連付け

「図64-1 外部アプリケーションへのWebクリッピング・プロデューサの関連付け」の説明

4. 登録したプロデューサからのWebクリッピング・ポートレットを.jspxページに追加します。

5. .jspxページを右クリックし、「実行」を選択します。

6. 外部アプリケーションの共有資格情報または公開資格情報を指定しなかった場合は、ポートレットに「ログイン情報の更新」リンクが含まれます。このリンクをクリックします。

7. 資格情報を入力し、「OK」をクリックして外部Webサイトにログインします。
図64-2に、MyOracleSupportという名前の外部アプリケーションのログイン画面を示します。

図64-2 統合外部アプリケーションへのログイン

「図64-2 統合外部アプリケーションへのログイン」の説明

8. Webクリッピング・ポートレットのヘッダーで「アクション」アイコンをクリックし、「カスタマイズ」を選択します。
「Webクリッピングの検索」ページが表示され、外部アプリケーションのデフォルトのURLが「URLの場所」フィールド(図64-3)に表示されます。

図64-3 Webクリッピングの検索

「図64-3 Webクリッピングの検索」の説明

これで、Webクリッピング・ポートレットに表示するWebページの任意のセクションを選択できるようになりました。Webクリッピング・ポートレットのカスタマイズ方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の章Webクリッピング・ポートレットの使用に関する項を参照してください。

外部アプリケーションの必要なページをクリップすると、認証が必要なページからのWebクリッピングでも、ポートレットで使用できるようになります。

64.4 Webクリッピングの拡張機能

Webクリッピングは、特定の拡張機能をサポートしています。Webクリッピング・トランスポートAPIを使用してカスタム認証方式を構成し、リソース・プロキシを使用するようにイメージ・リンクをリライトできます。

この項には次のサブセクションが含まれます:

- 第64.4.1項「Webクリッピング・トランスポートAPIの使用方法」

- 第64.4.2項「リソース・プロキシを使用するためのイメージ・リンクのリライト」

64.4.1 Webクリッピング・トランスポートAPIの使用方法

カスタム認証方式をサポートするには、Webクリッピング・トランスポートAPIを使用できます。Webクリッピング・トランスポート・レイヤーを拡張してカスタム認証方式をサポートするには、いくつかの実装およびデプロイの手順を実行する必要があります。

この項には次のサブセクションが含まれます:

- 第64.4.1.1項「Webクリッピング・トランスポートAPIの実装」

- 第64.4.1.2項「Webクリッピング・トランスポートAPIのデプロイ」

64.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ファイルを指します。

64.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. プロデューサ・サーバーを再起動して変更を有効にします。

64.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>

64.5 Webクリッピング・ポートレット構成のヒント

Webクリッピングを使用する前に、次のものを含むいくつかの管理タスクを実行する必要があります。

- 第64.5.1項「Webクリッピング・リポジトリの構成」

- 第64.5.2項「HTTPまたはHTTPSのプロキシ構成」

- 第64.5.3項「Webクリッピング・プロデューサのセキュリティ」

64.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クリッピング・リポジトリの「ステータス」列には「未構成」と表示されます。図64-4は、Webクリッピングのプロバイダ・テスト・ページを示しています。

図64-4 Webクリッピング - プロバイダ・テスト・ページ

「図64-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のシステム・ディレクトリのパスに空白があると、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

この項には次のサブセクションが含まれます:

- 第64.5.1.1項「Webクリッピング・リポジトリとしてのOracle Metadata Services (MDS)の使用方法」

- 第64.5.1.2項「Webクリッピング・リポジトリとしてのOracleデータベースの使用方法」

- 第64.5.1.3項「provider.xmlでのWebクリッピング・リポジトリの構成」

- 64.5.1.4項「repositoryInfoタグの属性および子タグ」

64.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データベースを使用するように構成されています。

例64-1は、provider.xml内のデフォルト・リポジトリとしてのMDSを示しています。

例64-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のシステム・ディレクトリのパスに空白があると、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など)を指定します。

注意:

複数中間層デプロイの場合、メタデータ・パスを共有ファイル・システムに変更します。

64.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クリッピング・リポジトリとして使用することはできません。

この項には次のサブセクションが含まれます:

- 第64.5.1.2.1項「RCUによって作成されるデータベース・スキーマの使用方法」

- 第64.5.1.2.2項「データベース・スキーマの作成」

64.5.1.2.1 RCUによって作成されるデータベース・スキーマの使用方法

Webクリッピング・リポジトリ用に、Oracle WebLogic Serverの一部としてインストールされているOracleデータベースを、jdbc/portletPrefsという名前のJNDIデータ・ソースを介して使用できます。このデータベースにアクセスするには、PORTLETという名前のスキーマを使用します。

注意:

PORTLETスキーマは、WebCenter Portal用に構成されたOracleデータベースで作成する必要があります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』のOracle WebCenter Portalのインストールに関する項を参照してください。

64.5.1.2.2 データベース・スキーマの作成

Webクリッピング・リポジトリとしてOracle 9i以上のデータベースの任意のユーザー定義スキーマを使用できます。Webクリッピングの定義およびクリッピング用のデータベース・スキーマを作成するには、例64-2のJavaコマンドを実行します。

例64-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

注意:

例64-2のクラスパスでは、UNIXとWindowsで異なるセパレータを使用しています。UNIXシステムでは、classpathにコロン(:)セパレータを使用します。Windowsシステムでは、classpathにセミコロン(;)セパレータを使用します。

64.5.1.3 provider.xmlでのWebクリッピング・リポジトリの構成

統合WLSにデプロイされたWebクリッピング・プロデューサのリポジトリ構成を変更するには:

1. テキスト・エディタでprovider.xmlファイルを開きます。

2. ご使用のWebクリッピング・リポジトリの設定を指定します。

- RCUによって作成されるJNDIデータ・ソースによって参照されるPORTLETスキーマを使用します。例64-3に示すエントリを指定します。

例64-3 Webクリッピング・リポジトリとしてのOracleデータベース

<repositoryInfo class="oracle.portal.wcs.provider.info.JdbcDbInformation">
<connectionName>jdbc/portletPrefs</connectionName>
<useRAA>false</useRAA>
<useASO>false</useASO>
</repositoryInfo>

タグ・パラメータの詳細は、第64.5.1.4項「repositoryInfoタグの属性および子タグ」を参照してください。

- Oracle database 9i以上用に作成されたデータベース・スキーマを使用します。そこで、接続情報を手動で指定できます。
WebクリッピングとしてOracle 9i以上を指定するには、例64-4に示すエントリでデータベース接続パラメータを指定します。

例64-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>

タグ・パラメータの詳細は、第64.5.1.4項「repositoryInfoタグの属性および子タグ」を参照してください。

セキュアなデータベース接続が必要な場合は、useASOエントリをtrueに設定することで、詳細セキュリティ・オプション(ASO)を有効にします。ASOの構成の詳細は、第64.5.3項「Webクリッピング・プロデューサのセキュリティ」を参照してください。

注意:

provider.xmlには、<repositoryInfo>の1つのエントリのみが存在できます。選択したWebクリッピング・リポジトリに応じて、そのエントリのみ非コメント化する必要があります。

3. provider.xmlファイルを保存します。

4. 統合WLSを再起動します。

64.5.1.4 repositoryInfoタグの属性および子タグ

表64-1では、repositoryInfoタグの属性および子タグとその説明を示しています。

注意:

repositoryInfoタグの属性および子タグは、Webクリッピングのprovider.xmlファイルのコメントでも説明されています。

provider.xmlファイルのコメントでは、Oracleインフラストラクチャ・データベースを使用するOracle9iデータベース以上用に提供されている例は、Oracle Portalと、そのインフラストラクチャ・データベースおよびアプリケーション・プログラミング・インタフェース専用です。その例は、Frameworkアプリケーションの実装には使用しないでください。

表64-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

64.5.1.5 Webクリッピング・リポジトリの移行

デフォルトでは、Webクリッピングは、ファイルベースのMDSを使用し、Webクリッピング定義および関連するメタデータを格納します。ただし、データベースを使用するようにWebクリッピングを構成できます。Frameworkアプリケーション用にこのリポジトリを移行するには、エクスポートおよびインポート・モードでデプロイ前ツールを使用して、MDSからデータベースへ、あるいはその逆に移行します。この手順は、アプリケーションごとに次のように実行する必要があります。

1. Webクリッピング・プロデューサを使用するすべてのFrameworkアプリケーションに対して、デプロイ前ツールをexportモードで実行します。

2. 別のリポジトリを使用するように、プロデューサを更新します。詳細は、第64.5.1.3項「provider.xmlでのWebクリッピング・リポジトリの構成」を参照してください。

3. Webクリッピング・プロデューサを使用するすべてのFrameworkアプリケーションに対して、デプロイ前ツールをimportモードで実行します。

64.5.2 HTTPまたはHTTPSのプロキシ構成

HTTPまたはHTTPSのプロキシ設定は、Webクリッピング・スタジオがファイアウォールの外にあるWebサイトに接続できるように設定する必要があります。provider.xmlファイルを手動で編集することにより、設定を指定できます。

Frameworkアプリケーション管理者は、HTTPまたはHTTPS構成に従って、手動でプロキシ設定を設定できます。provider.xmlファイルの該当するエントリを編集します。

例64-5では、provider.xmlの該当する部分を示しています。

例64-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>のタグに値を指定するかどうかはオプションです。

表64-2では、provider.xmlファイルで指定するプロキシ設定について説明しています。

表64-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タイムアウト・エラーが発生します。

64.5.3 Webクリッピング・プロデューサのセキュリティ

ここまでの項では、Webクリッピング・プロデューサを使用できるようにするために実行する必要のある管理タスクについて説明しました。この後の項では、Webクリッピング・プロデューサがSecure Sockets Layer (SSL)対応Webサイトにアクセスし、自身とデータベース間のチャネルを暗号化できるようにするために、実装する必要のあるセキュリティ構成オプションのいくつかについて説明します。

- 第64.5.3.1項「信頼できるサイトの証明書の追加」

- 第64.5.3.2項「Webクリッピング・プロデューサに対するOracle Advanced Securityの構成」

64.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ファイルの場所を書き留めます。

図64-5 cacertsファイルを見つける

「図64-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ファイルにインポートすることをお薦めします。これにより、キーストアのエントリの削除またはリストが容易になります。

64.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. ファイルのリポジトリ設定セクション(例64-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を無効にする場合も、これを行う必要があります。

64.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エラーが発生する可能性があります。

64.7 Webクリッピングのトラブルシューティング

この項では、Webクリッピングの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

行n、列nで"x"が見つかりました。期待される値(いずれか): "x"、"y" ...

パーサー・エラー・メッセージがログ・ファイルに書き込まれました。

問題

Webクリッピング・ポートレットに表示されているWebコンテンツに無効なHTMLまたはJavaScriptが含まれています。

解決方法

これは、Webクリッピング・エラーではなく、サイト固有の問題です。サイトの管理者に連絡して支援を求めてください。

65 Oracle WebCenter Portalのページレット・プロデューサを使用したページレットの作成

ページレットは、再使用可能なユーザー・インタフェース・コンポーネントです。任意のHTMLフラグメントをページレットにできますが、ページレット開発者は、パラメータ化された構成可能なページレットを記述し、その他のページレットと動的にやりとりし、ユーザー入力に応答するようにすることもできます。ページレットは、ポートレットに似ていますが、ポートレットがポータル専用に設計されていることに対して、ページレットは、ポータルやその他のWebアプリケーションを含め、あらゆるWebページで実行できます。ページレットを使用すれば、他のWeb環境でプラットフォーム固有のポートレットを公開できます。

Oracle WebCenter Portalのページレット・プロデューサ(旧Oracle WebCenter Ensemble)は、動的なページレット開発を容易にする有用なツールと機能のコレクションを提供します。この章では、ページレット・プロデューサを使用したページレットの開発および構成の詳細について説明します。詳細は、「ページレット・プロデューサ」ブログ(https://blogs.oracle.com/ensemble/)を参照してください。

- 第65.1項「サーバー通信とプロキシの概要」: この項では、ページレット・プロデューサがプロキシ・サーバーとして動作し、クライアント・コンピュータと外部リソースとの間のトランザクションを仲介(ブローカ)する方法について説明します。

- 第65.2項「Webアプリケーションでのページレットの使用」: この項では、WebCenter Portalでのページレットの使用方法について説明します。

- 第65.2.1項「Oracle JDeveloperでのJSFページへのページレットの追加」: この項では、Oracle JDeveloperを使用してページレットをJSFページにドラッグ・アンド・ドロップする方法について説明します。

- 第65.2.2項「Webページへのページレットの追加」: この項では、JavaScriptまたはRESTを使用して、ページレットをプロキシされたまたはプロキシされていないページに挿入する方法について説明します。

- 第65.2.3項「WebCenter Portal: Spacesでのページへのページレットの追加」: この項では、コンポーザを使用してページレットをスペースに追加する方法について説明します。

- 第65.3項「ページレット・プロデューサを使用したページレットの構築」: この項では、ページレット・プロデューサを使用したページレットの構築の詳細について説明します。

- 第65.3.1項「アダプティブ・ページレットのスクリプティング・フレームワークの使用」: この項では、アダプティブ・ページレットのスクリプティング・フレームワークを使用し、動的でインタラクティブな機能を備えた調整されたページを作成する方法について説明します。

- 第65.3.2項「ページレット・プロデューサの資格証明マッピングの使用」: この項では、ページレットおよびリソースのセキュリティ設定を構成し、ユーザーの認証を管理する方法について説明します。

- 第65.3.3項「実行時のページレット機能の変更」: この項では、カスタムのWebインジェクタとパーサーを使用して実行時にページレットの機能を変更する方法について説明します。

- 第65.3.4項「ページレットのデバッグ」: この項では、ページレットのデバッグ用の拡張ロギング・トレースにアクセスする方法について説明します。

- 第65.4項「WSRPおよびOracle JPDKポートレットの使用」: この項では、任意のWebアプリケーションで使用するために、ページレット・プロデューサを使用してWSRPおよびOracle JPDKポートレットを表示する方法について説明します。

- 第65.4.1項「ページレット・クロムの使用」: この項では、ページレット・クロムを使用して、実行時にWSRPやOracle JPDKポートレットでマークアップを変更する方法について説明します。

- 第65.5項「OpenSocialガジェットの使用」: この項では、ページレット・プロデューサによる標準のOpenSocial APIのサポートについて概説し、ガジェットを使用してプリファレンスを格納し、OpenSocial APIを使用してWebCenter Portalからユーザー情報を取得する方法について説明します。

- 第65.5.1「認証の構成」

- 第65.5.2項「ユーザー・プリファレンスの格納」

- 第65.5.3項「WebCenter Portalのプロファイル情報へのアクセス」

- 第65.5.4項「ユーザーのアクティビティ・ストリームへのアクセス」

- 第65.5.5項「ガジェット・イベンティングの使用」

- 第65.5.6項「例: 外部OpenSocialガジェットの消費」

- 第65.5.7項「例: ローカルOpenSocialガジェットの消費」

- 第65.6項「ページレットを使用したポートレット、ADFタスクフロー、OracleアプリケーションからのマークアップのOracle WebCenter Sitesへの統合」: この項では、ページレットをOracle WebCenter Sitesでコンテンツ・ソースとして使用する方法を説明します。

- 第65.6.1項「Oracle WebCenter Sitesへのページレットの追加」

- 第65.6.2項「アイデンティティ伝播の使用」

- 第65.6.3項「ページレット・プロデューサからバックエンド・アプリケーションへのアイデンティティの伝播」

- 第65.6.4項「WSRPポートレットのページレットとしての消費」

- 第65.6.5項「サイトにおけるWebCenter Portalサービスのページレットとしての消費」

- 第65.6.6項「アプリケーションのページレットとしての消費(EBS11iの使用例)」

65.1 サーバー通信とプロキシの概要

ページレット・プロデューサはプロキシ・サーバーとして動作し、クライアント・コンピュータと外部リソース間のトランザクションを仲介(ブローカ)します。

外部リソースのサービスは、HTTP経由でページレット・プロデューサと通信します。たとえば、ブラウザがページをリクエストすると、ページレット・プロデューサが各外部リソースに対する同時リクエストを作成し、ページからページレット・コンテンツを取得します。外部リソースは、現在のユーザーのプリファレンスをページレット・プロデューサから送信されたHTTPヘッダーから読取り、適切なHTMLを戻します。ページレット・プロデューサはHTMLをページ・マークアップに挿入します。イメージ・サービスに格納されたイメージは、ブラウザによって取得、表示されます。

65.1.1 ページレット・プロデューサのプロキシ

プロキシ・サーバーは、クライアント・コンピュータと別のサーバー間のトランザクションを仲立ちする仲介役として動作します。この構成は通常、それ以外の方法では外部リソースにアクセスできない可能性のあるクライアントに対するコンテンツとして使用されますが、これは、ポリシーの使用も含めて、クライアントに対して追加のセキュリティ制約を課するために使用できます。プロキシでは、外部リソースは表示されません。エンド・ユーザーにとって、コンテンツはプロキシ・サーバーから直接送られてくるように見えます。

このアーキテクチャにより、ページレット・プロデューサはコンテンツの単一アクセス・ポイントとなり、外部リソースがプライベート・ネットワークやファイアウォールの内側に存在できるようになります。ページレット・プロデューサが外部リソースに接続できるかぎり、ユーザーはコンテンツに直接アクセスできない場合でも、そのコンテンツを表示できます。ブラウザにとっては、ページレット・プロデューサは外部リソースのコンテンツのソースであるように見えます。

ユーザーがサービスと相互作用する際、プロキシで行われたURLへのリクエストはすべて、ページレット・プロデューサを通して自動的に再ルーティングされます。ユーザーにとって、コンテンツはページレット・プロデューサから送信されてくるように見えます。外部リソースは不明のバックエンド・システムです。

この構成には多くのメリットがあります。サービスに最も役に立つメリットは次のとおりです。

- 動的な機能とパーソナライズ: ページレット・プロデューサは、ページレットからリクエストをインターセプトします。これにより、MDSに格納されている情報をHTTPリクエストとレスポンスに組み込むことができます。

- セキュリティ: サービスを使用すると、ユーザーはパブリックに使用できないコンテンツにアクセスできます。特定のURLをプロキシの構成に含めることにより、保護されたサーバーに格納されているファイルが使用可能になります。

注意:

プロキシは強力な機能であるため、不適切に構成された場合はセキュリティを著しく低下させます。保護されていないプライベート・コンテンツをホストしている外部リソースに直接アクセスできるようにすると、危険なセキュリティ・ギャップが生じる可能性があります。

- パフォーマンス: ページレット・プロデューサはプロキシ・コンテンツをキャッシュし、エンド・ユーザーに対するレスポンス時間を短縮し、外部リソースのパフォーマンスを向上します。プロキシはHTMLなどのコンテンツに対しては効率的に機能しますが、静的イメージなどのバイナリ・データには通常は適していません。イメージは変換する必要がないため、大きなイメージをプロキシすると、パフォーマンスに悪影響を与える可能性があります。これが、イメージ・サービスを使用してプロキシ経由での静的イメージのルーティングを避ける必要がある1つの理由です。

サービス用にプロキシする必要があるURLのコレクションは、リソース・エディタで構成されます。リソース用に構成された内部URL接頭辞を使用する、またはプロキシされた別のCSPやWebリソースを指すすべてのURLは、「URL再書きこみの有効化」の選択を解除しないかぎり、プロキシされます。

プロキシを使用するサービスを実装する場合は、次の警告とベスト・プラクティスに留意してください。

- URL変換: ページレット・プロデューサは、プロキシされるURLを正確に開くため、コードを変換する必要があります。ページレット・プロデューサは、レスポンスを送信する前に、HTMLを解析し、関連するプロデューサ・リソース用に構成された内部URL接頭辞を使用するURLを探します。ページレット・プロデューサは、レスポンスをクライアントに返す前に、プロキシするURLを変換します。関連するURLは、正しい場所を指すように変換されます。

- スクリプト制限: URLを動的に作成するJavaScript構成は、コンテンツがすでに変換された後に実行されるため、問題を起こすことがあります。VBScriptはプロキシによって変換されません。使用しているコードがプロキシを認識するかぎり、動的スクリプトとVBScriptを引き続き使用できます。パーサーとWebインジェクタを使用して、URLのリライトに対するターゲット・コントロールを実装できます。パーサーとWebインジェクタの構成方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』で「Oracle WebCenter Portalのページレット・プロデューサの管理」の章を参照してください。

- URLエンコーディング: 予期しない変換を防ぐために、URLであるヘッダーをすべてエンコードすることはベスト・プラクティスです。JSPでは、書き込まれたURLをすべてエンコードします。コードによってページ本体にURLが書き込まれる場合は(たとえば、プリファレンス・ページへのリンクなど)、そのコードをエンコードする必要があります。標準のJavaサーブレット・コマンド、response.encodeURL()は優先される方法ですが、URLEncoder.encode(url)も使用できます。.NET Frameworkでは、HttpUtility.URLEncodeクラスによって必要な機能が提供されます。

65.1.1.1 ページレットとプロキシの概要

すべてのページレットは、他のページレットと一緒に表示されるように設計されています。前の項で説明したように、ページレット・プロデューサはプロキシとして機能し、複数のアプリケーションのページレットを処理して組み合せ、様々な機能を持つ単一の統合されたページを作成します。

ページレットが返したコードはページレット・プロデューサ・サーバーによって解析され、ページを構成するHTMLマークアップに挿入されます。同じバックエンド・アプリケーションのページレットは、ページ内で互いにやりとりできます。

注意:

.NETでは、リダイレクトURLをエンコードする必要はありません。これは、バックエンドで自動的に処理されます。

65.1.2 HTTPとCSPについて

HTTPはWebページのコンテンツとXMLをサーバーとクライアント間で送信するためにもっぱら使用されるプロトコルです。CSPは、オープン標準であるHTTP 1.1に基づいたプラットフォームに依存しないプロトコルで、ページレット・プロデューサと外部CSPリソース間の通信構文を定義します。

65.1.2.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サーバー間でやりとりされるすべてのヘッダーを表示できます(第65.3.4項「ページレットのデバッグ」を参照)。HTTPは、SSLとともに使用され、セキュアなコンテンツを提供します。また、シングル・サインオン(SSO)でもBasic認証用のHTTPヘッダーが使用されます。

65.1.2.2 CSP

CSPはHTTPを拡張し、固有ヘッダーを定義してページレット・プロデューサと外部CSPリソース(つまり、Oracle WebCenter Interactionポートレット)間で設定を受け渡しします。CSPでは、これらのサービスがHTTPを使用して設定を通信および変更する方法の概略を記述します。最新バージョンの1.4は次の場所で入手できます:http://download.oracle.com/docs/cd/E13158_01/alui/wci/docs103/devguide/references/CSP1.4.pdf。

システムとユーザー構成変数の通信に使用されるカスタムCSPヘッダーは、ページレットでも使用できます。

表65-1 ページレット・プロデューサのヘッダー

ヘッダー名

説明

ユーザーID

現在ログインしているユーザーのユーザーID。この値は、セッションの有効期限を判別するときに使用できます。UserID=2の場合、デフォルトの'Guest'ユーザーがログインして、その他のユーザーのセッションはすべて終了します。

ユーザー名

ログインしているユーザーの名前。ユーザー名は、表示のパーソナライズやフォーム・フィールドの事前指定に使用できます。

イメージ・サービスのURL

ページレット・プロデューサのユーザー実装での、イメージ・サービスの仮想ルート・ディレクトリのURL。この場所は、サービスで使用されるすべての静的イメージに使用する必要があります。

スタイルシートのURL

現在のユーザーのスタイルシートのURL。ページレット・プロデューサの実装ごとに、UIはカスタマイズされます。一部のポータルでは、ユーザーはスタイルシートの中から選択できます。これらのスタイルを使用すると、ページレットが、現在のユーザーによるページレット・プロデューサの実装スタイルで表示されます。

ページレットID

現在のリソース(ページレット)のID、および現在のページレットのインスタンスID。この値は、HTMLフォームおよびクライアント側JavaScript機能の名前に追加し、ページ上のフォームや機能の一意の名前を確保して名前の競合を回避するために役立ちます。

ホスト・ページのURL

ページレットをホストするページのURL。設定の構成後にユーザーを正しいページに戻すために、プリファレンス・ページにはこのURLが必要です。この値を使用して、単一のページレットで様々なページに各種コンテンツを表示できるようにすることもできます。

65.2 Webアプリケーションでのページレットの使用

この項では、ページレットをJDeveloperのJSFページ、WebページまたはWebCenter Portal: Spacesのページに追加する方法について説明します。ページレットを任意のWebアプリケーションに追加する前に、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』で説明されているように、ページレット・プロデューサでリソースとページレットをデプロイして構成する必要があります。

この項には次のサブセクションが含まれます:

- 第65.2.1項「Oracle JDeveloperでのJSFページへのページレットの追加」

- 第65.2.2項「Webページへのページレットの追加」

- 第65.2.3項「WebCenter Portal: Spacesでのページへのページレットの追加」

65.2.1 Oracle JDeveloperでのJSFページへのページレットの追加

Oracle JDeveloperを使用すると、JSFページにページレットをドラッグ・アンド・ドロップできます。この項では、ページレット・プロデューサをWebCenter Portal: Frameworkアプリケーションに登録し、ページレットをJSFページに追加し、ブラウザでページを表示してページレットをテストします。

この項には次のサブセクションが含まれます:

- 第65.2.1.1項「WebCenter Portal: Frameworkアプリケーションへのページレット・プロデューサの登録」

- 第65.2.1.2項「JSFページへのページレットの追加」

- 第65.2.1.3項「ページレットの保護」

65.2.1.1 WebCenter Portal: Frameworkアプリケーションへのページレット・プロデューサの登録

ページレットをJSFページに追加する前に、ページレット・プロデューサをアプリケーションに登録する必要があります。ページレット・プロデューサは次の2つの方法で登録できます。

- 特定のアプリケーションにプロデューサを登録。デフォルトでは、「アプリケーション・リソース」パネル下に接続を作成する「新規Pagelet Producer」ダイアログで、「IDE接続」オプションが選択されています。

- 「リソース・パレット」を使用してプロデューサを登録。このオプションを使用すると、プロデューサのページレットを複数のアプリケーションで使用できます。「リソース・パレット」で使用可能なページレットは、ページ上にドロップすることにより、任意のFrameworkアプリケーションに追加できます。「リソース・パレット」からページレットを追加する際、まだ登録されていない場合には、そのプロデューサはアプリケーションに登録されます。アプリケーション・ナビゲータの「アプリケーション・リソース」パネルに、「リソース・パレット」からプロデューサ接続全体をドラッグ・アンド・ドロップすることもできます。これにより、プロデューサがアプリケーションに登録されます。または、「リソース・パレット」でプロデューサを右クリックし、コンテキスト・メニューから「アプリケーションに追加」を選択してプロデューサを現在開いているアプリケーションに登録します

Oracle JDeveloperを使用してページレット・プロデューサを登録するには:

1. アプリケーション・ナビゲータの「アプリケーション・リソース」パネルで、「接続」を右クリックして「接続の作成」を選択し、「ページレット・プロデューサ」を選択します。
「リソース・パレット」からの起動など、ウィザードを起動するその他の方法については、第1.6.2項「接続ウィザードにアクセスする方法」を参照してください。

2. 「新規Pagelet Producer」ダイアログの「名前」フィールドに、意味のわかりやすいプロデューサ名を入力します。たとえば、myPageletProducerと入力します。

3. 「URL」フィールドに、ページレット・プロデューサのURLをhttp://hostname:portnumber/pageletsの形式で入力します。

4. 「OK」をクリックします。「アプリケーション・リソース」パネルでは、図65-1に示すように、「ページレット・プロデューサ」はConnectionsディレクトリのPagelet Producerディレクトリ下に作成されます。

図65-1 「アプリケーション・リソース」パネルのページレット・プロデューサ

「図65-1 「アプリケーション・リソース」パネルでのページレット・プロデューサ」の説明

65.2.1.2 JSFページへのページレットの追加

ページレットをページに追加するには:

1. JDeveloperで、JSFページがまだ開いていない場合は、そのページを「デザイン・ビュー」で開きます。

2. 「アプリケーション・リソース」パネルまたは「リソース・パレット」の「IDEリソース」パネルに進みます。「ページレット・プロデューサ」で、プロデューサを開いてそのコンテンツを表示します。

3. プロデューサのコンテンツから、JSFページにページレットをドロップします。

4. このページレットでIFRAMEを有効化する場合は、「ページレットのページへの追加」ダイアログの「IFrameの使用」セクションで「はい」を選択します。

5. IFrame高さフィールドでは、必要な高さをピクセルで指定するか、空白のままにします。高さを「auto」と指定して、自動サイズ変更を使用することもできます。(このオプションを使用するには、プロジェクトにIFrameサイズ変更ページを追加する必要があります。詳細は、第65.2.2.3項「IFrameへの自動サイズ変更の使用」を参照してください。)「OK」をクリックします。

6. 「タスク・フロー・バインディングの編集」ダイアログでは、入力パラメータがデフォルトで指定されています。必要に応じて任意のパラメータを変更し、「OK」をクリックします。

7. ページを保存します。「構造」ウィンドウでは、ページは図65-2のように表示されます。

図65-2 「構造」ウィンドウのページレット

「図65-2 「構造」ウィンドウのページレット」の説明

8. アプリケーション・ナビゲータの「プロジェクト」で該当のJSFページを右クリックし、「実行」を選択します。

9. ログイン・ページが表示される場合は、ユーザー名とパスワードを入力しページレットを表示できるようにします。図65-3に、ブラウザ・ウィンドウでのページレットのサンプルを示します。

図65-3 ページレットのサンプル

「図65-3 ページレットのサンプル」の説明

65.2.1.3 ページレットの保護

ページレットの保護の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のポリシーに関する項およびOracle Single Sign-On (OSSO)の構成に関する項を参照してください。

65.2.2 Webページへのページレットの追加

ページレットをデプロイすると、JavaScriptまたはRESTを使用してページレットをプロキシされたページやプロキシされていないページのどちらにも挿入できます。

この項には次のサブセクションが含まれます:

- 第65.2.2.1項「JavaScriptを使用したページレットの挿入」: ページレット・プロデューサを使用すると、簡単なJavaScript機能を使用してページレットをプロキシされていないページに挿入できます。

- 第65.2.2.2項「RESTを使用したページレットへのアクセス」: ページレット・プロデューサREST APIを使用すると、リモートWebサービスでリソースやページレットの情報をページレット・プロデューサから取得し、ページレットをプロキシされたページやプロキシされていないページのどちらにも注入できます。

- 第65.2.2.3項「IFrameへの自動サイズ変更の使用」: ページレット注入機能を使用すると、ページレットのコンテンツをカプセル化するIFrameのサイズを自動的に変更できます。

65.2.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, payload, 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のようになります。省略または空白のままにすると、ページレット・コンテンツがインラインにレンダリングされます。

- payload: ページレット・リクエストで送信するXMLペイロード。

- 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>

65.2.2.1.1 JavaScriptを使用したプリファレンス・エディタの追加

injecteditor関数を使用すると、ユーザーがこの機能をサポートするページレットに個人プリファレンスと共有プリファレンスを設定できるようにするプリファレンス・エディタを追加できます。この機能は、Oracle 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を除くすべての引数はオプションです。

65.2.2.2 RESTを使用したページレットへのアクセス

Representational State Transferを表すRESTは、HTTPを介してAPIを提供する簡単な手法です。RESTの基本原則は次のとおりです。

- API URLは汎用的なメソッド・エンドポイントではなくリソースを指します。

- リクエストでは、簡素化されたCRUDメソッドに標準のHTTP動詞を使用します。これは読取り専用APIで、GETリクエストのみを許可します。

- すべてのリクエストは、取得したオブジェクト(ページレットまたはリソース)の完全表現を返します。

ページレット・プロデューサREST APIには、次の機能があります。

- ページレットをプロキシ設定されていないページに注入して、「ページレット・プロデューサ」がOracle WebCenter Interaction、Oracle WebLogic Portal、またはその他のサードパーティ・ポータルのポートレット・プロバイダとして動作できるようにします。詳細は、第65.2.2.2.1項「ページレット注入API」を参照してください。

- リモートWebサービスで、リソースとページレットに関する情報をページレット・プロデューサから取得できます。詳細は、第65.2.2.2.2項「データ取得API」を参照してください。

65.2.2.2.1 ページレット注入API

ページレット注入URLは、リモート・ポートレットの場所を指定するためにポータルで使用できます(この方法でページレットをポートレットとして使用できます)。また、注入URLを、HTMLページでIFrameタグのsrc属性として使用することもできます。

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を自動的にサイズ変更できます。詳細は、第65.2.2.3項「IFrameへの自動サイズ変更の使用」を参照してください。

100%

ifheight

IFrameの高さを設定します。パーセント'%'またはピクセル'px'で指定できます。例: ifheight=500px。'auto'に設定すると、コンテンツの幅に収まるようにIFrameを自動的にサイズ変更できます。詳細は、第65.2.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エラーはページ全体を消費します。このモードは、ページレット・プロデューサが親ページを制御する場合にのみ使用可能です。

たとえば、次の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>

65.2.2.2.2 データ取得API

ページレット・プロデューサからデータを取得するには、次の2つのREST APIが使用できます。

- ページレットAPI: リモート・アプリケーションを使用してページレット・プロデューサからページレット・データを取得できます。(例65-1「すべてのページレット」および例65-2「ライブラリおよび名前別ページレット」を参照してください。)

- リソースAPI: リモート・アプリケーションを使用してページレット・プロデューサからリソース・データを取得できます。(例65-3「すべてのリソース」および例65-4「名前別リソース」を参照してください。)

すべてのリクエストの基本のURLは、 http://host:port/pagelets/restservice/pageletproducer/です。

例65-1 すべてのページレット

http://host:port/pagelets/restservice/pageletproducer/pagelets/
http://host:port/pagelets/restservice/pageletproducer/pagelets/?format=xml

例65-2 ライブラリおよび名前別ページレット

http://host:port/pagelets/restservice/pageletproducer/pagelet/libraryname/pageletname/
http://host:port/pagelets/restservice/pageletproducer/pagelet/libraryname/pageletname/?format=xml

例65-3 すべてのリソース

http://host:port/pagelets/restservice/pageletproducer/resources/
http://host:port/pagelets/restservice/pageletproducer/resources/

例65-4 名前別リソース

http://host:port/pagelets/restservice/pageletproducer/resource/name
http://host:port/pagelets/restservice/pageletproducer/resource/name/?format=xml

65.2.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>

65.2.3 WebCenter Portal: Spacesでのページへのページレットの追加

WebCenter Portal: Spacesでは、コンポーザを使用してページレットをページに追加できます。デフォルトでは、ページレットは「リソース・カタログ」の「マッシュアップ」フォルダに表示されます。ページレットをページに追加するには、「リソース・カタログ」のページレットに移動して選択します。

Spacesでリソースをページに追加する方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページへのリソース・カタログのコンポーネントの追加に関する項を参照してください。

ページレットをページ内で構成するには、該当のページを編集モードで表示し、ページレットの編集ボタン(スパナ・アイコン)をクリックします。「コンポーネント・プロパティ」ダイアログの「ページレット・プロパティ」タブでは、ページレット・パラメータとIFrameオプションを定義できます。

図65-4 「コンポーネント・プロパティ」ダイアログ: 「ページレット・プロパティ」

「図65-4 「コンポーネント・プロパティ」ダイアログ: 「ページレット・プロパティ」」の説明

65.3 ページレット・プロデューサを使用したページレットの構築

この項では、ページレット・プロデューサを使用してページレットを構築するための情報について説明します。

- 第65.3.1項「アダプティブ・ページレットのスクリプティング・フレームワークの使用」

- 第65.3.2項「ページレット・プロデューサの資格証明マッピングの使用」

- 第65.3.4項「ページレットのデバッグ」

65.3.1 アダプティブ・ページレットのスクリプティング・フレームワークの使用

アダプティブ・ページレットのスクリプティング・フレームワークは、サービスをCSPページレットとプロキシされたページに提供するクライアント側JavaScriptライブラリです。この項では、スクリプティング・フレームワークを使用して動的機能をページレットに実装する方法について説明します。

- 第65.3.1.1項「構造化されたHTTPレスポンスの処理」: アダプティブ・ページレットのスクリプティング・フレームワークは、通常XMLとしてエンコードされる、構造化されたHTTPのクライアント側レスポンス・ハンドラとして使用できます。

- 第65.3.1.2項「イベント通知の使用」: ページレットは、ページがロードされたり、ブラウザのフォーカスが変更された場合など特定のイベントが発生すると応答できます。

- 第65.3.1.3項「インプレース更新の使用」: ページレットは、ページをリフレッシュすることなく、その内部コンテンツをリロードできます。

- 第65.3.1.4項「セッション・プリファレンスの使用」: ブラウザレベルの変数が同一ページ上にない場合でも、その変数を格納してページレット間で共有できます。たとえば、1つのページレットにユーザーが入力した値は、別のユーザーが取得できます。スクリプティング・フレームワークは仲介として機能するため、すべてのページレットで共通セッションに格納されているすべての値にアクセスできます。

クラスとメソッドの完全リストについては、JSPortlet APIのドキュメントを参照してください。

アダプティブ・ページレットの追加情報は、第65.3.1.5項「アダプティブ・ページレットの開発のヒント」を参照してください。

65.3.1.1 構造化された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>

65.3.1.2 イベント通知の使用

アダプティブ・ページレットのスクリプティング・フレームワークにより、ページレットでは、その他のページレットが生成したページレベルのイベントとカスタム・イベントの両方に応答できます。

スクリプティング・フレームワーク内のメソッドregisterForWindowEventおよびregisterOnceForWindowEventは、ページレベルのイベントにアクセスできるページレットを指定します。完全なリストは、第65.3.1.2.1項「スクリプティング・フレームワークで使用するページレベルのイベント」を参照してください。これらのイベントの通知を登録するには、イベントの名前と、イベント発生時にコールする必要のあるメソッドの名前を渡します。ページレベルのイベントが発生すると、JavaScriptイベント・オブジェクトが引数としてイベント・ハンドラに渡されます。スクリプティング・フレームワークでは、ページレットはraiseEventおよびregisterForEventを使用してカスタム・イベントを発生させ、応答することができます。ブロードキャスト/リスナー・デザイン・パターンは、セッション・プリファレンスを指定して通知サービスを使用する重要な例です。ユーザーはアイテムを選択するか、「ブロードキャスト」ページレットで別のアクションを実行できます。これによって、その他の「リスナー」ページレットのコンテンツが再作成されます。次の例では、ブロードキャスト・ページレットによって、テキスト・ボックスに数字を入力できるフォームが表示されます。

図65-5 ブロードキャスト・ポートレット

「図65-5 ブロードキャスト・ポートレット」の説明

ユーザーがテキスト・ボックスに数値を入力すると、リスナー・ページレットの値が変更されます。最初のリスナー・ページレットには、ブロードキャスト・ページレットに入力した数値の平方根が表示されます。

図65-6 リスナー1のポートレット
Listener
「図65-6 リスナー -1 ポートレット」の説明

2番目のリスナー・ページレットには、ブロードキャスト・ページレットに入力した数値の立方根が表示されます。

図65-7 リスナー2のポートレット
Listener
「図65-7 リスナー -2 ポートレット」の説明

次の手順では、ページレットがどのように機能するのかについてまとめています。

- ロード時に、各リスナー・ページレットは固有のインスタンス・メソッド(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>

65.3.1.2.1 スクリプティング・フレームワークで使用するためのページレベルのイベント

スクリプティング・フレームワークでは、次のページレベルのイベントに自動的にアクセスできます。

表65-2 ページレベルのイベント

イベント

トリガー時期:

onload

ブラウザがページをロードした直後

onbeforeunload

ページがアンロードされる(ブラウザ・ウィンドウが閉じるか別の場所に移動する)前

onunload

ページがアンロードされる(ブラウザ・ウィンドウが閉じるか別の場所に移動する)直前

onactivate

ページがアクティブ要素として設定された(フォーカスを取得した)とき

onbeforeactivate

ページがアクティブ要素として設定される(フォーカスを取得する)直前

ondeactivate

アクティブ要素が現在のページから親ドキュメントの別のページに変更されたとき

onfocus

ページがフォーカスを取得したとき

onblur

ページがフォーカスを喪失したとき

oncontrolselect

ユーザーがページのコントロールをまさに選択するとき

onresize

ページのサイズをまさに変更するとき

onresizestart

ユーザーがコントロールの選択でページのディメンションの変更を開始したとき

onresizeend

ユーザーがコントロールの選択でページのディメンションの変更を終了したとき

onhelp

ブラウザがアクティブ・ウィンドウになっている状態でユーザーが[F1]キーを押したとき

onerror

ページのロード中にエラーが発生したとき

onafterprint

関連するドキュメントが印刷されたまたは印刷プレビューされた直後

65.3.1.3 インプレース・リフレッシュの使用

ページ上の他のコンテンツに影響を与えずに、ページレット・コンテンツをインプレースでリフレッシュするには、スクリプティング・フレームワークを使用してインプレース更新を実装します。

ページレットの多くは時間に影響を受けるデータを表示します。場合によっては、ユーザーはページの残りの部分を変更またはリフレッシュすることなく、ページレット内のリンク間を移動できる必要があります。ページレット・コンテンツは、コマンドを使用する、リフレッシュ・アクションをイベントに関連付ける (refreshOnEvent)、または設定した間隔でリフレッシュするようにページレットをプログラムする(setRefreshInterval)ことでリフレッシュできます。スクリプティング・フレームワークにはまた、ページレットを開閉するためのメソッドも用意されています。次の単純な例では、リフレッシュ・ページレットに「ポートレットのリフレッシュ」ボタンが表示されます。このボタンをクリックすると、ページレットに表示される日時が更新されます。

図65-8 リフレッシュ・ポートレット

「図65-8 ポートレットのリフレッシュ」の説明

インプレース更新は、ページレット・オブジェクト・インスタンスに対して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>

65.3.1.4 セッション・プリファレンスの使用

クライアント・ブラウザ内に設定を保存して共有するには、セッション・プリファレンスを使用します。

ページレットはプリファレンスを使用して相互に通信できますが、プリファレンスにアクセスするには通常、データベースへのラウンドトリップが必要です。セッション・プリファレンスは、クライアント・ブラウザ内でユーザーのセッションの設定を保存および共有する手段を提供します。「マスター/ディテール」デザイン・パターンは、セッション・プリファレンスの最も基本的な使用方法です。このデザイン・パターンでは、2つのページレットの間で制御と表示が分割されます。たとえば、「マスター」ページレットではデータをリスト形式で要約し、「ディテール」ページレットではユーザーの選択に応じてデータ・アイテムごとにディテールを表示することができます。次の例では、マスター・ページレットによって、テキスト・ボックスに色コードを入力できるフォームが表示されます。

図65-9 色コード

「図65-9 色コード」の説明

ユーザーが色コードをテキスト・ボックスに入力すると、ディテール・ページレットに表示されている色が変更されます。

図65-10 色見本

「図65-10 色見本」の説明

マスター・ページレットの「色の入力」テキスト・ボックスで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>

65.3.1.5 アダプティブ・ページレットの開発のヒント

次のヒントは、アダプティブ・ページレットのスクリプティング・フレームワークを使用するほとんどのページレットに当てはまります。

- すべてのフォームと関数に一意の名前を使用します。一意の名前と値の形成にページレットのGUIDを使用し、ページ上の他のコードと名前の衝突が発生しないようにします。

- すべてのURLをプロキシします。コール元のページと異なるホスト/ポートを持つURLに対するリクエストを作成することはできません。JavaScriptを通じてリクエストされるURLはすべてプロキシする必要があります。詳細は、第65.3項「ページレット・プロデューサを使用したページレットの構築」を参照してください。

- アダプティブ・ページレットのスクリプティング・フレームワークを使用している場合は、サポートをチェックします。コンポーネントが存在するかどうかを判断するコードを組み込むことをお薦めします。理想的には、ページレットでいずれの状況も処理できる必要があります。最も簡単な解決方法は、スクリプティング・フレームワークがサポートされていない場合にユーザーに警告を行う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)が送信されます。

65.3.2 ページレット・プロデューサの資格証明マッピングの使用

ページレット・プロデューサでは、関連するリソースに定義された設定に基づいて、プロキシされた各アプリケーションの認証を管理します。

ページレット・プロデューサは外部の資格証明ストアへのカスタム・マッピングを作成するAPIを提供しているため、カスタム資格証明ソースに対してユーザーを認証できます。

IVendorCredentialMapperインタフェースでは、アプリケーションで特定のユーザーのセカンダリ認証に必要な、適切な資格証明のセットを取得できるオブジェクトに対するページレット・プロデューサのインタフェースを定義します。このインタフェースを実装するには、次の手順に従います。

1. com.plumtree.runner.credentialmapper.IVendorCredentialMapperインタフェースを実装するJavaクラスを作成します。

2. このインタフェースのgetCredentialメソッドとsetCredentialメソッドを資格証明ボールトにマップします。次の簡略化した例では、VConnectorという内部クラスを使用して、VConnector.getInstance(). getCredentialsForDomainをコールしています。注意: この手順はベンダー固有のものです。資格証明ストアは別のサーバーにあることが多いため、おそらくネットワーク・ホップが含まれます。マッパーには一意の名前を付け、必要に応じてローカライズします。すべての必要な名前については、IVendorCredentialMapper APIのドキュメントを参照してください。

3. クラスをJARにコンパイルします。ビルド・プロセスは、ページレット・プロデューサの配布キットに付属するcommon.jarにリンクする必要があります。

4. カスタム・ボールトをページレット・プロデューサにロードします。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』を参照してください。

5. ページレット・プロデューサ・サーバー(異なるサーバー上にある場合はproxyとadminuiの両方)を再起動します。カスタムの資格証明ボールトが、リソース・エディタの「資格証明マッピング」ページの資格証明ソースのリストに表示されます。

次の例は、説明を目的としているために簡略化されています。

package com.oracle.credentialvault;
import com.oracle.connector.CredentialsSet;
import com.oracle.connector.VConnector;
import com.plumtree.runner.credentialmapper.Credential;
import com.plumtree.runner.credentialmapper.IVendorCredentialMapper;

public class OracleCredentialVault implements IVendorCredentialMapper {

/*
* Pagelet Producer will pass credential types as following:
* Runner_*, where * is what the credential value type associated with this login
* form in the adminui. For example, if the credential value type is
*  'username' then "Runner_username" will be passed to the mapper.
*/
public Credential getCredential(String initiator, String credType)
{
System.out.println("OracleCredentialVault::getCredential, initiator: " + initiator + ", credType: " + credType);

/*
* Since this vault stores credentials per user and domain, we need to devise
* a scheme to map Pagelet Producer's credential type to a domain.
* One way to do this is to specify the credential type as something like:
* "domain_type", which would translate to credTypes like:
* Runner_domain.com_username and Runner_domain.com_password
*/

String username = initiator.toLowerCase(); // assume that the vault stores all usernames in lowercase
String domain = "oracle.com"; //getDomain(credType);
String type = credType; //getType(credType);

CredentialsSet credSet = VConnector.getInstance().getCrededentialsForDomain(username, domain);
if( credSet != null ) {
System.out.println("OracleCredentialVault::getCredential, found vault set: " + credSet.toString() + ", returning type = " + type);
return new Credential(credSet.getCredential(type));
} else {
System.out.println("OracleCredentialVault::getCredential, found null vault set");
return null;
}
}

public String getDescription(String userLocale)   {
return "Test mapper that mimics a mapper between Pagelet Producer and a credential vault that associates credentials with a username/domain relationship";
}

public String getName() {
return "OracleCredentialVault";  }

public String getName(String userLocale) {
return "OracleCredentialVault"; }

public String getVendorName(String userLocale) {
return "Oracle"; }

public boolean setCredential(String initiator, Credential credential, String credType)
{
System.out.println("OracleCredentialVault::setCredential, initiator: " + initiator + ", credType: " + credType + ", Credential: " + credential.getCredentialValue());

String username = initiator.toLowerCase(); // assume that the vault stores all usernames in lowercase
String domain = "oracle.com"; //getDomain(credType);
String type = credType; //getType(credType);

System.out.println("OracleCredentialVault::setCredential setting username: " + credential.getCredentialValue());
CredentialsSet userCredSet = VConnector.getInstance().getCrededentialsForDomain(username, domain);
userCredSet.setCrededential(type, credential.getCredentialValue());
VConnector.getInstance().setCrededentialsForDomain(username, domain, userCredSet);
return true;
}

public boolean supportsCredentialsEditing()
{
// We can set new credentials using this vault
return true;
}
/*
private String getDomain(String credType)
{
int dstart = credType.indexOf("_");
int dend = credType.indexOf("_", dstart+1);
String domain = credType.substring(dstart+1, dend);
System.out.println("TestMapper::getDomain, reading domain as: " + domain);
return domain;
}
*/
/*
private String getType(String credType)
{
int dstart = credType.indexOf("_");
dstart = credType.indexOf("_", dstart+1);
String type = credType.substring(dstart+1, credType.length());
System.out.println("TestMapper::getType, reading type as: " + type);
return type;
}
*/
/*
private String doGetPropertyValue(String principal, String property)
{
return doGetPropertyValue(principal, property, ",", "=");
}
*/
/*
private String doGetPropertyValue(String principal, String property, String propDelim, String valueDelim)
{
int propertyindex = principal.toLowerCase().indexOf(property.toLowerCase());
String uname = null;
if( propertyindex != -1)
{
// found a property occurence
int beginIndex = propertyindex;
int endIndex = principal.toLowerCase().indexOf(propDelim.toLowerCase(), beginIndex);
String prop = null;
if(endIndex != -1)
{
prop = principal.subSequence(beginIndex, endIndex).toString().trim();
} else {
prop = principal.subSequence(beginIndex, principal.length()).toString().trim();
}
if( prop != null )
{
int valueIndex = prop.toLowerCase().indexOf(valueDelim);
if(valueIndex != -1)
{
uname = prop.subSequence(valueIndex + valueDelim.length(), prop.length()).toString().trim();
}
}
}
return uname;
}
*/
}

資格証明マッピングを使用するためのリソースの構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のページレット・プロデューサのリソースとページレットの作成に関する項を参照してください。

65.3.3 実行時のページレット機能の変更

ページレット・プロデューサを使用すると、カスタムのインジェクタおよびパーサーを使用してページレットの機能を実行時に変更できます。

65.3.3.1 Webインジェクタの作成

Webインジェクタは、プロキシされているリソース・ページの指定の場所にコンテンツを挿入します。コンテンツには、HTML、CSS、JavaScriptおよびページレット宣言などのテキストを指定できます。ページから不要なコンテンツを削除するために空のインジェクタを使用することもできます。インジェクタをOpenSocialリソース用に作成することはできません。単純なHTMLコンテンツの注入についてはユース・ケースが限られていますが、ページレットのHTMLマークアップを直接変更するJavaScriptを注入することもできます。

Webインジェクタを作成するには、使用するリソース下の「インジェクタ」セクションを選択し、ツールバーの「作成」アイコンをクリックします。

URLパターンを「URLフィルタ」フィールドに入力することにより、インジェクタをリソースのサブセットに適用できます。インジェクタは、「URLフィルタ」ボックスに指定されたテキストで始まるリソース内のURLにのみ適用されます。このボックスが空または/のみ指定されている場合は、インジェクタはリソース全体に適用されます。

インジェクタで特定の種類のコンテンツに制限するには、「MIMEフィルタ」ボックスにMIMEタイプのカンマ区切りリストを入力します。たとえば、text/htmlではインジェクタはHTMLコンテンツに制限され、一方、text/cssではCSSコンテンツにのみ制限されます。

リソースの出力のどこに注入するのかを定義します。

- 「先頭」はコンテンツをページの最初に配置します。このオプションは、ページレット宣言の注入には使用しないでください。

- 「最後」はページの最後にコンテンツを配置します。

- 「次より前」/「次より後」/「置換」の各オプションは、表示されたフィールドに指定されている一意の文字列に関連するページに配置します。「大文字/小文字を区別しない」を選択することにより、文字列の大/小文字を区別しないようにできます。
「囲みタグ」オプションは、一意の文字列を識別し、テキストと囲みタグの両方を次のページで指定されているコンテンツと置き換えます。

図65-11 ページレット・プロデューサ・コンソール: 「インジェクタ - 全般」ページ

「図65-11 ページレット・プロデューサ・コンソール: インジェクタ - 全般」ページ」の説明

「コンテンツ」ページで注入するコンテンツを入力します。このコンテンツには、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>

65.3.3.2 カスタム・パーサーの作成

カスタム・パーサーを使用すると、コンテンツを解析し、URLを検索するための組込みのロジックを補足したり変更できます。組込みのパーサーがURLの識別やURLとしてリライトしてはいけないセクションの識別に失敗した場合は、カスタム・パーサーを使用してデフォルトの動作を変更できます。パーサーは、WSRPやOracle JPDKポートレット・プロデューサまたはOpenSocialガジェット・プロデューサ用に作成することはできません。

カスタム・パーサーを作成するには、使用するリソース下で「パーサー」セクションを選択し、ツールバーの「作成」をクリックします。

- パーサーの名前を入力します。

- 「URLフィルタ」ボックスにURLパターンを入力することにより、パーサーをリソースのサブセットに適用できます。パーサーは、「URLフィルタ」ボックスに指定されたテキストで始まるリソース内のURLにのみ適用されます。ボックスが空または/のみ指定されている場合は、パーサーはリソース全体に適用されます。

- 新しい解析ルールを追加するには、「作成」をクリックして新しい行を「フラグメントの場所」セクションに追加します。

- 「正規表現」欄に、変換するURLフラグメントを識別するための正規表現を入力します。最初のグループ化表現(かっこ内)はフラグメントを識別し、残りの表現はそれを検索するためのコンテキストを提供します。

- 「フラグメント・タイプ」から選択し、選択した場所を解析する方法を定義します。

- 「静的URL」はサーバー上で変換されます。

- 「動的URL」は、クライアント上でJavaScriptを使用して変換されます。

- 「HTMLフラグメント」および「JavaScriptフラグメント」タイプは、XMLなどの別のコンテンツ・タイプに埋め込まれるコンテンツに使用します。

- 「リライトなし」では、URLを検索しない場所を指定します。このオプションは、URLとして間違って識別されたマークアップのリライトを避けるために使用します。

- ナビゲータ・ツールバーの保存アイコンをクリックします。

図65-12 ページレット・プロデューサ・コンソール: 「パーサー」 - 「一般」ページ

「図65-12 ページレット・プロデューサ・コンソール: 「パーサー」 - 「一般」ページ」の説明

たとえば、正規表現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"。

65.3.4 ページレットのデバッグ

ページレット・プロデューサには、ページレットのデバッグ用に拡張ロギング・トレースが組み込まれています。ロギングは、ページレット・プロデューサ・コンソールの「設定」セクションで構成され、ここで、ページレット・プロデューサの各コンポーネントについて様々なレベルのロギングを定義できます。(ページレット・プロデューサの構成設定の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracle WebCenter Portalのページレット・プロデューサの管理に関する項を参照してください。)

図65-13 ページレット・プロデューサ・コンソール: 設定 - ロギング

「図65-13 ページレット・プロデューサ・コンソール: 「設定 - ロギング」」の説明

ページレット・プロデューサは、標準のOracle Diagnostic Loggingファシリティにメッセージのログを記録します。Oracle WebLogic Serverでは、ログはuser-projects/domains/ <domain>/servers/<server>/logs/<server>-diagnostic.logに格納されます。

65.3.4.1 HTTPトレース

ページレット・プロデューサによって送受信されたHTTPリクエストとレスポンスを表示するには、「ログ設定」ページで「HTTP」コンポーネントを「最も詳細」に設定します。次のトレースの例は、テスト環境から取得されたものです。

例65-5 ページレット・プロデューサによって受信されたHTTPリクエスト

URL: http://10.148.118.211:7001/pagelets/bidwiki/includes/js/ajax.js
METHOD: GET
SESSION ID: GdYGNJzMhxy1CJBMVTX8xTNq32GmLXYNY9VqFBcdprFnhcyQtzdp!1377086614!1305769149498
HEADERS:
Host: 10.148.118.211:7001
Connection: keep-alive
Referer: http://10.148.118.211: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 2005 07:00:06 GMT
COOKIES:
JSESSIONID: GdYGNJzMhxy1CJBMVTX8xTNq32GmLXYNY9VqFBcdprFnhcyQtzdp!1377086614

例65-6 HTTPページレット・プロデューサにより送信されたレスポンス

URL: http://10.148.118.211: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://10.148.118.211:7001/pagelets/bidwiki/download/ resources/leftnav_bg.jpg);*/
/*background-repeat: repeat-y;*/
background-color: #F0F0F0;
/*border-bottom:1px solid #F0F0F0;*/
} ...

例65-7 ページレット・プロデューサから送信されたHTTPリクエスト

URL: http://xmlns.oracle.com/includes/js/ajax.js
METHOD: GET
HEADERS:
CSP-Ensemble-REST-API: http://10.148.118.211:7001/pagelets
X-Client-IP: 10.148.118.211
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 2005 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://10.148.118.211: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,...

例65-8 ページレット・プロデューサによって受信された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;
}

65.3.4.2 変換トレース

変換の前後にページレット・プロデューサによってプロキシされたコンテンツを表示するには、「ロギング設定」ページでTransformコンポーネントを「最も詳細」に設定します。これらのトレースの目的は、変換の様々な段階でレスポンス・コンテンツをログに記録して、それらを比較したり、異なる変換の結果を表示できるようにすることです。次のトレース例は、テスト環境から取得したものです。

例65-9 未変換のマークアップ

Original request: URL: http://10.148.118.211: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://10.148.118.211: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;
}

例65-10 変換済のマークアップ(トランスフォーマ・クラスによって変換)

Transformed by: class com.plumtree.server.impl.portlet.transformers.CSSTurboParser
Original request: URL: http://10.148.118.211: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://10.148.118.211: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;
}

65.4 WSRPおよびOracle JPDKポートレットの使用

ページレット・プロデューサを使用すると、WSRPおよびOracle JPDKポートレットを表示して任意のWebアプリケーションで使用できるようになります。WSRPまたはOracle JPDKポートレット・プロデューサに接続するためのページレット・プロデューサの構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracle WebCenter Portalのページレット・プロデューサの管理に関する項を参照してください。次の第65.4.1項「ページレット・クロムの使用」で説明されているように、ページレット・プロデューサは、実行時にポートレット・マークアップを変更することもできます。

65.4.1 ページレット・クロムの使用

ページレット・クロムを使用すると、WSRPまたはJPDKポートレット・プロデューサからインポートされたポートレットを使用して作成されたページレットで実行時にマークアップを変更できます。

ページレット・クロム・テンプレートは次の各方法を指定するHTMLファイルです。

- ポートレット・マークアップのスタイル・レンダリング方法

- ポートレット・タイトルの表示方法

- モード切替えオプションのレンダリング方法

デフォルトのクロム・テンプレートには、ポートレット名と、異なるモードへの切替えが可能なドロップダウン・メニューが表示されます。ドロップダウン・メニューは、基礎となるポートレットによりサポートされるすべての標準モードが動的に移入されます。テンプレートは、次の予約済トークンを使用して主要なポートレット要素を特定していますが、これらは実行時にページレット・プロデューサによって置き換えられます。

表65-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アプリケーションのclasspathでホストする必要があります。

外部イメージ・サーバーを使用するようにページレット・プロデューサを構成した場合は、ensemblestatic.war/imageserver/yahooからイメージ・サーバーにファイルをコピーしてデフォルトのクロム・テンプレートが正しくレンダリングされるようにします。

クロム・テンプレートを実装するには、それをパラメータとしてページレット注入URL (RESTまたはJavaScript)に追加します。ページレット注入URLの詳細は、第65.2.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を設定することによって標準のデフォルト・テンプレートでオーバーライドすることができます。)

65.5 OpenSocialガジェットの使用

ページレット・プロデューサ・サーバーからアクセス可能なOpenSocialガジェットは、ページレットとして登録して、ポータルなどのWebアプリケーションで使用できます。ページレット・プロデューサへのOpenSocialページレットの登録の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracle WebCenter Portalのページレット・プロデューサの管理に関する項を参照してください。

ページレット・プロデューサでは、OAuthを除く、標準のOpenSocial APIのほとんどをサポートしています。完全なOpenSocial API参照ドキュメントは、http://docs.opensocial.org/display/OSD/Javascript+API+Documentationで検索できます。

ページレット・プロデューサでは、OpenSocial APIを使用した、ガジェットによるプリファレンスの保存、WebCenter Portalプロファイルと接続情報の取得およびユーザーのアクティビティ・ストリームへのアクセスが可能です。これらの機能の使用方法の詳細は、後続の項を参照してください。

65.5.1 認証の構成

ガジェットからユーザーレベルのデータ(プリファレンスやピープル・コネクション)をリクエストするには、エンド・ユーザーのIDを確立する必要があります。任意のOpenSocialガゼットがサーバーのユーザーレベルのデータにアクセスする必要がある場合は、ページレット・プロデューサ・コンソールで親のOpenSocialリソースのセキュリティ・ポリシーを構成する必要があります。ユーザーがOpenSocialガゼットに初めてアクセスすると、ログイン・ページが表示されます。初回ログイン後は、OpenSocialガゼットに対する後続のリクエストで確立されたユーザーIDが使用されます。

ページレット・プロデューサ・リソースのセキュリティ・ポリシーの構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の「ページレットの管理」の章を参照してください。

65.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: テキスト・フィールドとしてレンダリング(値はパイプ「|」文字で区切る必要があります)

65.5.3 WebCenter Portalプロファイル情報へのアクセス

OpenSocialガジェットでは、標準のOpenSocial APIを介して現在のユーザーのプロファイル・データとピープル・コネクションを問合せできます。この機能を使用するには、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracle WebCenter Portalのページレット・プロデューサの管理に関する項の説明に従って、WebCenterDSデータ・ソースのターゲットをWC_Portletサーバーに設定する必要があります。

注意:

OpenSocial APIをプロファイルや接続情報の更新に使用することはできません。

サポートされているユーザー・プロファイルのフィールドを次の表に示します。

表65-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である必要があります。

65.5.4 ユーザーのアクティビティ・ストリームへのアクセス

OpenSocialガジェットは、OpenSocial APIを使用してユーザーのアクティビティ・ストリームを操作できます。次の操作がサポートされています。

- アクティビティの取得

- アクティビティの作成

次の操作はサポートされていません。

- アクティビティの更新

- アクティビティの削除

サポートされているアクティビティ・ストリームのフィールドを次の表に示します。

表65-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。

65.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/Javascript+API+Documentationを参照してください。また、http://docs.opensocial.org/display/OSD/Core-Gadget+-+PubSubも参照してください。

65.5.6 例: 外部OpenSocialガジェットの消費

次の例は説明のために簡略化されています。ページレット・プロデューサ・コンソールの設定の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の「Oracle WebCenter Portalのページレット・プロデューサの管理」を参照してください。

1. ページレット・プロデューサ・コンソールを使用して新しいリソースを作成し、タイプに「OpenSocial」を選択します。必要に応じてURLおよびポリシーを定義します。新しいリソースを保存します。

2. ページレット・プロデューサ・コンソールを使用して、新しいページレットを作成し、「ガジェットURL」フィールドにガジェットXMLスキーマの場所を入力します。

- ガジェット名およびガジェットに定義されたすべてのプリファレンスをインポートするには、「ガジェット・メタデータのインポート」ボタンをクリックします。いずれかのプリファレンスが編集可能な場合、ページレット・プロデューサは、インポートされたプリファレンスを使用してプリファレンス・エディタを作成します。

- 生成されたプリファレンス・エディタを構成またはカスタマイズするには、「ページレット・パラメータ」ページに移動します。

3. 「ドキュメント」ページに移動し、JavaScriptまたはREST APIを使用してページレットおよびプリファレンス・エディタにアクセスするためのサンプル・コードを確認します。

4. 新しいページレットを保存します。

65.5.7 例: ローカルOpenSocialガジェットの消費

次の例は説明のために簡略化されています。ページレット・プロデューサ・コンソールの設定の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の「Oracle WebCenter Portalのページレット・プロデューサの管理」を参照してください。

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. 新しいページレットを保存します。

65.6 ページレットを使用したポートレット、ADFタスクフロー、OracleアプリケーションからのマークアップのOracle WebCenter Sitesへの統合

この項は、既存のWSRPポートレットまたは、Oracle EBSなどのバックエンド・アプリケーションにより公開されるWeb UIの要素も含めて、Oracle WebCenter Sites 11gの各ページにコンテンツを統合する必要のある開発者を対象としています。開発者はOracle WebCenter SitesおよびOracle WebCenterページレット・プロデューサに精通しており、Webテクノロジを十分に理解している必要があります。

この項には次のサブセクションが含まれます:

- 第65.6.1項「Oracle WebCenter Sitesへのページレットの追加」

- 第65.6.2項「アイデンティティ伝播の使用」

- 第65.6.3項「ページレット・プロデューサからバックエンド・アプリケーションへのアイデンティティの伝播」

- 第65.6.4項「WSRPポートレットのページレットとしての消費」

- 第65.6.5項「サイトにおけるWebCenter Portalサービスのページレットとしての消費」

- 第65.6.6項「アプリケーションのページレットとしての消費(EBS11iの使用例)」

65.6.1 Oracle WebCenter Sitesへのページレットの追加

ページレットとその関連リソースが構成されたら、JavaScriptまたはRESTを使用してそれをWebページに挿入できます。詳細は、第65.2.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はページレット・プロデューサに構成されたライブラリとページレットを示しています。パラメータの詳細は、第65.2.2.2項「RESTを使用したページレットへのアクセス」を参照してください。

65.6.1.1 IFrameの自動サイズ変更の有効化

ページレットをよりシームレスに消費側ページに統合するには、コンテンツを収められるように動的にサイズ変更することによって、ページレットiFrameがよりインライン・マークアップらしく動作するように設定できます。この機能を有効にするには、サイトとページレット・プロデューサの両方でさらに構成を加える必要があります。

この項では、WebCenter Sitesに同梱されているAviSportsサンプル・サイトを使用します。このサイトに新しいアセットを追加するには、サイト管理ページにログインして、次に示すように左側のナビゲーションで開発セクションを開きます。

図65-14 サイト管理ページ

「図65-14 サイト管理ページ」の説明

まず、次の設定を使用して新しいテンプレートを作成します。

- 名前

- 名前: 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サイズ設定を使用する必要があります。

65.6.1.2 ページレット・スタイルの変更

消費側WebCenter Sitesのページでページレットが見栄えよく収まるようにするには、インジェクタを使用して元のCSSをオーバーライドするスタイルを追加することもできます。オーバーライドが適切に機能するためには、インジェクタによるスタイル定義がバックエンド・アプリケーションによって定義されたスタイルの後に置かれることが重要です。次の例では、置換CSSを<HEAD>セクションの末尾に注入することで、これを処理しています。

ページレットのスタイルを変更するには、ページレット・プロデューサ管理コンソールを使用して新しいインジェクタをページレットに追加します。ページレットを開き、「インジェクタ」を選択して、次の設定で新しいインジェクタを作成します。

- 一般

- 名前: new_styles (または任意の名前)

- URLフィルタ: <none>

- MIMEフィルタ: text/html

- インジェクタの場所: </head>の前

- コンテンツ

Injector Location: Before </head>

第65.6.6項「ページレットとしてのアプリケーションの消費(EBS11iの使用例)」には、WebCenter SitesにサンプルのAviSportsサイトを一致させるためにEBS UIのスタイル変更に使用されるインジェクタの作業例が含まれています。

65.6.2 アイデンティティ伝播の使用

ページレット・プロデューサの中心的な目的は、バックエンド・アプリケーションをプロキシ設定することです。ページレット・プロデューサはブラウザとバックエンド・アプリケーションの「仲介役」として動作するため、アイデンティティ伝播を次の2つの部分に分ける必要があります。

- 第65.6.2.1項「ページレット・プロデューサでのアイデンティティの確立」

- 第65.6.2.2項「ページレット・プロデューサにより指定されたログイン・ページの使用」

65.6.2.1 ページレット・プロデューサでのアイデンティティの確立

ページレット・プロデューサは通常、図65-15に示すようなIFrameを使用して、WebコンテンツをWebCenter Sitesに注入します。

図65-15 サイトにおけるIFrameとしてのページレット・プロデューサのコンテンツ

「図65-15 サイトにおけるIFrameとしてのページレット・プロデューサのコンテンツ」の説明

コンテンツはIFrameとして注入されるため、ユーザーIDは、図65-16に示すようにサイト・コンテナとページレット・プロデューサ・コンテナの両方に設定されている必要があります。図65-16では、2つの認証スキーム間での共有が前提となっているユーザー・ディレクトリが省略されていることに注意してください。

図65-16 サイトおよびページレット・プロデューサで異なる認証スキーム

「図65-16 サイトおよびページレット・プロデューサで異なる認証スキーム」の説明

ブラウザと2つのコンテナ間でアイデンティティを管理する理想的な方法は、図65-17に示すようにOracle Access Manager (OAM)を使用することです。図65-17では、2つの認証スキーム間での共有が前提となっているユーザー・ディレクトリが省略されていて、OAMアクセス・サーバーが除外されていることに注意してください。また、この構成は11g以前のバージョンではサポートされていないことにも注意してください。

図65-17 OAMを使用した理想的なフロントエンド認証構成

「図65-17 OAMを使用した理想的なフロントエンド認証構成」の説明

WebCenter Sites11g用にOAMを設定する場合は、『Oracle WebCenter Sitesでサポートするソフトウェアの構成』のOracle Access Manager統合の設定に関する章を参照してください。

65.6.2.2 ページレット・プロデューサにより指定されたログイン・ページの使用

OAMを設定する前に、サイトでページレット・プロデューサの統合をテストしておくと役立つ場合があります。OAMを使用しないと、ユーザーはページレット・プロデューサとサイトでそれぞれ別々に認証する必要があります(図65-16を参照)。この項では、ページレット・プロデューサでの個別認証の構成方法について説明します。

OAM SSOがページレット・プロデューサまたはサイトのどちらかに存在していない場合は、ページレット・プロデューサからログイン・フォームが表示されていることを確認して、図2に示す認証スキームをサポートする必要があります。ページレット・プロデューサでログイン・フォームが表示されるようにするには:

1. ページレットへのアクセスを制限するJ2EEロールを特定するか、ページレット・プロデューサをホストしているJ2EEアプリケーション・サーバーに新しいロールを作成します。
この例では、デフォルトのWLSインストールに存在しているグローバルなWebLogic Server (WLS)の「匿名」J2EEロールを使用しています。

2. ページレット・プロデューサ管理コンソールにログインし、サイト内で表面化する必要のあるページレットが含まれているリソースに移動して、ステップ1で選択したロールを追加します。
ロールは、リソースの「ポリシー」ページで定義されます。

図65-18 ページレット・プロデューサ管理コンソール - 「ポリシー」ページ

「図65-18 ページレット・プロデューサ管理コンソール - 「ポリシー」ページ」の説明

65.6.3 ページレット・プロデューサからバックエンド・アプリケーションへのアイデンティティの伝播

アイデンティティの確立方法は、次の各項で説明するようにアプリケーションのタイプによって異なります。

- 第65.6.3.1項「WSRP/JPDKポートレット」

- 第65.6.3.2項「ネイティブ認証(非SSO)により保護されたスタンドアロン・バックエンド・アプリケーション」

- 第65.6.3.3項「自動ログインによるアイデンティティ伝播」

- 第65.6.3.4項「SSOにより保護されたスタンドアロン・バックエンド・アプリケーション」

- 第65.6.3.5項「参照: 共通自動ログイン構成」

65.6.3.1 WSRP/JPDKポートレット

WSRPポートレットは、アイデンティティ伝播のためにWSSトークンを使用する必要があります。セキュリティ・トークンの構成方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWSRPおよびOracle JPDKポートレット・プロデューサの登録に関する項と、第65.6.4項「WSRPポートレットをページレットとして消費」を参照してください。

アイデンティティを必要とするOracle JPDKポートレットごとに、外部アプリケーションのログイン・フォームによって提供される情報に基づいて資格証明が渡されます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の外部アプリケーションの管理に関する項とOracle JPDKポートレット・プロデューサの登録に関する項を参照してください。

65.6.3.2 ネイティブ認証(非SSO)により保護されたスタンドアロン・バックエンド・アプリケーション

ページレット・プロデューサには「自動ログイン」という機能があり、この機能によってページレット・プロデューサはバックエンド・アプリケーションにより確立された「ネイティブ」認証メカニズムと相互作用できます。

65.6.3.3 自動ログインによるアイデンティティ伝播

バックエンド・アプリケーションにはそれぞれ独自の認証手段があるため、必要な資格証明を収集するには、ページレット・プロデューサで独自のログイン・プロンプトを開始する必要があります。ページレット・プロデューサのリソースは、資格証明を基本的な認証ヘッダー、NTLMトークン、またはKerberosトークンとしてバックエンド・アプリケーションに送信し、さらにフォーム・ベースの認証を(通常はセッションCookieを介して)管理するように構成できます。詳細は、『Oracle Fusion Middleware for Oracle WebCenter Portal管理者ガイド』の自動ログインに関する項を参照してください。

注意:

「ユーザー・ボールト」を使用するように「ユーザー名」フィールドと「パスワード」フィールドを設定して、バックエンド・アプリケーションへのアクセスに必要なユーザー自身の一意の資格証明を入力するプロンプトが各ユーザーに表示されるようにします。

65.6.3.4 SSOにより保護されたスタンドアロン・バックエンド・アプリケーション

バックエンド・アプリケーションに適切な自動ログイン設定を決定することは、かなり大変な場合があります。この作業では、リクエスト・ヘッダーの参照、リダイレクトの確認、マークアップ(ときには動的に生成されたもの)の調査が必要になります。この調査および構成プロセスは、自動ログインが必要なアプリケーションが複数存在する場合は、気の滅入るような作業になりかねません。したがって、Oracle Access Manager (OAM) SSOまたはOracle SSO (OSSO)が使用可能な場合は、バックエンド・アプリケーションを保護するためにこれらのSSOソリューションの1つを使用することを強くお薦めします。

バックエンド・アプリケーションがOAMで保護されると、次のサブセクションで説明するように、次の2つの方法でページレット・プロデューサが資格証明を提供できるようになります。

- 第65.6.3.4.1項「OAMで保護されたバックエンド・アプリケーションへのアイデンティティ直接伝播の使用」

- 第65.6.3.4.2項「自動ログインとSSOによるアイデンティティ伝播」

65.6.3.4.1 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をプロキシ設定しようとしないかぎり、すべて実行されます。この項の以降の部分では、サイト統合のコンテキストでこれが実行できる方法を詳しく説明します。

設定例

この例では、前述の図65-18に示すように、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)。

図65-19 ページレット・プロデューサ管理コンソール - 「一般プロパティ」ページ

「図65-19 ページレット・プロデューサ管理コンソール - 「一般プロパティ」ページ」の説明

バックエンド・アプリケーションを直接コールするようにページレット・プロデューサを設定(WebGateをバイパス)することにより、ページレット・プロデューサで受信されるすべてのOAMセキュア・ヘッダーは、バックエンド・アプリケーションをホストしているアプリケーション・サーバー上のOAMアイデンティティ・アサーション・プロバイダに渡されます。バックエンド・アプリケーションをホストしているアプリケーション・サーバー上のOAMアイデンティティ・アサーション・プロバイダは、OAMヘッダーを受信すると、適切なユーザー・プリンシパルを設定します(図65-19を参照)。図65-19では、2つの認証スキーム間での共有が前提となっているユーザー・ディレクトリが省略されていることに注意してください。また、OAMアクセス・サーバーも除外されています。

図65-20 バックエンド・アプリケーションを直接コールするページレット・プロデューサ

「図65-20 バックエンド・アプリケーションを直接コールするページレット・プロデューサ」の説明

注意:

WebGateをバイパスするようにページレット・プロデューサを設定するとシングル・サインオンが実行できますが、このソリューションはいつでも適用できるわけではありません。WebGateをホストしているOHSサーバーがバックエンド・アプリケーションのロード・バランシングも管理している場合は、WebGateをバイパスすることによってロード・バランシングもバイパスされます。アプリケーションへのトラフィックはすべて1つのサーバーにルーティングされます。この場合は、第65.6.3.4.2項「自動ログインとSSOによるアイデンティティ伝播の使用」で説明するように、自動ログイン用にページレット・プロデューサを構成することをお薦めします。

65.6.3.4.2 自動ログインとSSOによるアイデンティティ伝播

OAM WebGateのバイパス(第65.6.3.4.1項「OAMで保護されたバックエンド・アプリケーションへのアイデンティティの直接伝播の使用」で説明するとおり)が実行可能なオプションでない場合は、ページレット・プロデューサの自動ログインを使用して資格証明を提供することができます。バックエンド・アプリケーションごとに個別のログイン・フォームを使用する場合と異なり(自動ログインによるアイデンティティ伝播の項を参照)、Oracle SSOソリューション(OAMまたはOSSO)のログイン・ページによる自動ログインを使用すると、自動ログインを1回だけ設定すればよく、構成手順はすべての実装で同じであるという利点があります。

OSSOでの自動ログインの設定手順は、このドキュメントの例1: E-Business Suite 11iの消費の自動ログインの構成に関する項で詳しく説明しています。本番環境では、これらの手順はこのまま実行できますが、例外として「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」を含めます。

65.6.3.5 参照: 共通自動ログイン構成

この項では、一般的なバックエンドSSOシナリオに対するページレット・プロデューサでの自動ログイン設定のクイック参照を示します。

65.6.3.5.1 Oracle Access Manager (OAM)

ログイン・フォームの識別:

- URL: http://%OAM_ROOT%/server/obrareq.cgi

フォーム送信場所:

- URL: /oam/server/auth_cred_submit

フォーム・フィールド:

- actionURL : 静的 : /oam/server/auth_cred_submit

- request_id : 生成済

- username : 静的または資格証明ボールト

- OAM_REQ : 生成済

- password : 静的または資格証明ボールト

65.6.3.5.2 Oracle SSO (OSSO)

ログイン・フォームの識別:

- URL: %OSSO_HOST%/sso/jsp/login.jsp

フォーム送信場所:

- URL: %OSSO_HOST/sso/auth - POST

フォーム・フィールド:

- appctx: 生成済

- locale: 生成済

- password : 静的または資格証明ボールト

- site2pstoretoken : 生成済

- ssousername: 静的または資格証明ボールト

- v: 生成済

65.6.4 WSRPポートレットのページレットとしての消費

ページレット・プロデューサではWebCenter Common Consumerを統合しているため、WSRPポートレットやOracle JPDKポートレットをページレットとして公開して、WebCenter Sitesまたは、WSRPコンシューマを含んでいないその他のすべてのWebコンテナで使用することができます。

WSRPポートレット・プロデューサは、Enterprise Manager、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プロデューサとページレット・プロデューサ間に適切に構成されていることを確認する必要があります。詳細は、WSセキュリティの構成の章のWebCenter Portalドメイン・キーストアの設定に関する項を参照してください。

- WSRPプロデューサの登録時に、「セキュリティ」セクションで適切な「トークン・プロファイル」を選択して、必要な構成情報を入力します。キーストアへのパスは絶対パスである必要があります。

65.6.4.1 カスタムADFタスクフローをWSRPポートレットとして公開

ADFタスクフローがホストされているページからそれを「クリッピング」することで、そのADFタスクフローをページレット・プロデューサで消費できますが、この方法はお薦めできません。ADFページによって生成されたマークアップの複雑さや、他のタスクフローまたはADFページ・パラメータへの潜在的な依存性を考慮すると、お薦めできる方法は、タスクフローに基づいてWSRPポートレットを作成してから、そのポートレットをページレット・プロデューサで消費することです。この方法の利点は、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ポートレット・プロデューサの登録に関する項を参照してください。

65.6.4.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ポートレットをサイトで使用するためにページレットとして公開する方法について説明します。

65.6.4.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に設定する必要があります。

65.6.4.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またはOracle Enterprise Managerを使用して指定できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWLSTを使用したキーストアの構成に関する項、またはFusion Middleware Controlを使用したキーストアの構成に関する項を参照してください。

注意:

キーストア値を構成したら、JPS構成変更が選択されるようにするために、ページレット・プロデューサをホストしている管理対象サーバー(デフォルトではWC_Portlet)とWLS管理サーバーの両方を再起動する必要があります。

- プロデューサの構成の第4項の手順では、発行者名の重要性は強調されていません。ここに入力される名前は、コンシューマにより送信された名前と一致する必要があります。Oracle JPSの場合、送信されたデフォルトの発行者IDはwww.oracle.comです。

65.6.4.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ポートレットを表現します。

注意:

ポートレットへのユーザー・アイデンティティ伝播を可能にするには、第65.6.3項「ページレット・プロデューサからバックエンド・アプリケーションへのアイデンティティの伝播」の説明に従って、WLPとページレット・プロデューサの両方を構成する必要があります。(テスト目的の場合、または認証なしでアクセス可能なポートレット・コンテンツの場合は、「セキュリティ」下の「デフォルト・ユーザー」に有効なユーザー名を指定できます。)

65.6.4.1.5 サイトへのWLP WSRPポートレットの追加

WLP WSRPポートレットをサイト内のページに追加するには、第65.6.1項「Oracle WebCenter Sitesへのページレットの追加」の手順に従います。ページレット・コンテンツをロードするIFrameのsrc属性に使用するURLは、第65.2.2.2項「RESTを使用したページレットへのアクセス」の「ドキュメント」の項に記載されています。

自動生成されたWSRPリソースとページレットは変更できません。WLPポートレットのマークアップの変更、たとえば、カスタムCSSスタイルの注入によりポートレットUIのルック・アンド・フィールを変更するためにページレット・プロデューサの機能を使用するには、新しいバージョンのリソースを作成する必要があります。ページレット・プロデューサ管理コンソールでWLP WSRPプロデューサ用に作成されたリソースを選択し、「コピー」をクリックします。リソースのクローン・バージョンは変更可能であり、インジェクタなどの要素を追加してページレットの機能をカスタマイズできます。

65.6.5 サイトにおけるWebCenter Portalサービスのページレットとしての消費

WebCenter Portalには、WebCenter Sitesでユーザーのコラボレーションが容易に実行できるように、お知らせやドキュメントなどのツールが組み込まれています。これらのツールの概要は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のサービス: リンクを介したお知らせに関する項およびサービス: ワークリストを介したリストに関する項を参照してください。

これらのサービスをサイトで公開する場合のお薦めできる方法は、Oracle WebCenter Portal (11.1.1.6およびそれ以降)に組み込まれているサービス・プロデューサ・コンポーネントを利用して、関連するWSRPポートレットをページレット・プロデューサ内で消費することです。

次のポータル・ツールは、デフォルトではWSRPポートレットとして公開されています。

- アクティビティ・ストリーム

- ディスカッション・フォーラム

- メール

- 投票マネージャ

- ドキュメント・マネージャ

- リスト

- タグ・クラウド

- ブログ

- ワークリスト

- 投票

- お知らせ

注意:

追加のツールを公開するには、サービス・プロデューサを新しいJSPXページに拡張し、そのページにタスクフローを追加します。

65.6.5.1 要件

『Oracle Fusion Middleware Oracle WebCenterインストレーション・ガイド』の手順に従って、WebCenter Portalをインストールします。WebCenter Content、ディスカッション・サーバー、ページレット・プロデューサを含むすべての依存コンポーネントもインストールされていて、構成済であることを確認します。

デフォルトでは、サービス・プロデューサは、WebCenter Portalドメイン内のWC_Portlet管理対象サーバーに自動的にデプロイされます。WC_Portlet管理対象サーバーがインストール時に作成されなかったか、サービス・プロデューサを別途実行する要件がある場合、Oracle WebCenter Portal 11.1.1.6リリースで追加されたカスタムのサービス・プロデューサ・テンプレートを使用してWC_CustomServicesProducer管理対象サーバーを作成できます。この管理対象サーバーには、ポータル、アクティビティ、およびMDSスキーマにアクセスするために、Oracle WebCenterサービス・プロデューサ・コンポーネントと事前構成済のJDBCデータ・ソースが含まれています。詳細は、『Oracle Fusion Middlewareドメイン・テンプレート・リファレンス』のOracle WebCenterカスタム・サービス・プロデューサのテンプレートに関する項を参照してください。

65.6.5.2 セキュリティおよびシングル・サインオンの構成

サイト駆動のWebサイトからWebCenter Portalサービスへのアクセスを可能にするには、次の2つの前提条件があります。

- WebサイトとWebCenter Portal間に共通のユーザー・ベースを作成する

- WebサイトからWebCenter Portalへのユーザー・アイデンティティ伝播を確立する

これらの前提条件については、以降のサブセクションで説明します。

- 第65.6.5.2.1項「共通ユーザー・ベースの作成: LDAP統合」

- 第65.6.5.2.2項「ユーザー・アイデンティティ伝播の確立: OAM構成」

- 65.6.5.2.3項「アイデンティティ・ストアでのGUID属性の構成」

- 第65.6.5.2.4項「ディスカッション・サーバー用SSOの構成」

65.6.5.2.1 共通ユーザー・ベースの作成: LDAP統合

共通ユーザー・ベースを作成するには、WebCenter SitesとすべてのWebCenter Portalコンポーネントで使用される共通のLDAPリポジトリを構成する必要があります。LDAPサーバーを選択する際、それがWebCenter Portalコンポーネントを実行するWebLogic Serverに準拠していることを確認します。

WLSでのセキュリティ構成時に、次の点を忘れないようにしてください。

- 「オーセンティケータ」の優先度を「SUFFICIENT」に設定します。

- 「制御フラグ」(カッコ内)と認証プロバイダの順序を次のように設定します。

- OAM IDアサーション・プロバイダ: (REQUIRED)

- LDAPオーセンティケータ: (SUFFICIENT)

- デフォルトのオーセンティケータ: (SUFFICIENT)

- デフォルトのアイデンティティ・アサーション・プロバイダ: (SUFFICIENT)

65.6.5.2.2 ユーザー・アイデンティティ伝播の確立: OAM構成

ユーザー・アイデンティティ伝播を確立するには、Oracle Access Manager (OAM)を使用してWebCenter SitesおよびWebCenter Portal用にSSOソリューションを構成することをお薦めします。

OAMを使用している場合は、ユーザー・プリンシパル名がORACLE_REMOTE_USERヘッダーに渡されるように構成されていることを確認します。ObSSOCookieとOAM_REMOTE_USERの両方が、WebLogic Server上のOAMアイデンティティ・アサーション・プロバイダでアクティブに設定されている必要があります。

65.6.5.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>

65.6.5.2.4 ディスカッション・サーバー用SSOの構成

ディスカッションを使用するには、WebLogic Serverでオーセンティケータの順序付けを行う前に(デフォルトのオーセンティケータおよびデフォルトのアイデンティティ・アサーション・プロバイダを使用)、ディスカッション・サーバーをSSO用に構成します。WLSTを使用してディスカッション・サーバー用にSSOを構成することもできます。詳細は、『Oracle Fusion Middleware for Oracle WebCenter Portal管理者ガイド』のSSO用のディスカッション・サーバーの構成に関する項を参照してください。

65.6.5.3 WSRPポートレットとして公開されたWebCenterサービスの登録

WebCenterサービスを公開するWSRPポートレットをページレット・プロデューサにインポートするには、Enterprise Manager、WLSTまたはページレット・プロデューサ管理コンソールを使用して、サービス・プロデューサをページレット・プロデューサにWSRPプロデューサとして登録するだけです。

次のスクリーンショットでは、ページレット・プロデューサ管理コンソールでのWSRPエンドポイントの登録例を示しています。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のページレット・プロデューサでのWSRPおよびOracle JPDKポートレット・プロデューサの登録に関する項を参照してください。

図65-21 ページレット・プロデューサ管理コンソール - WSRPエンドポイントの登録

「図65-21 ページレット・プロデューサ管理コンソール - WSRPエンドポイントの登録」の説明

このページの「セキュリティ」セクションの「トークン・プロファイル」は、サービス・プロデューサをサポートするために「WSS 1.0 SAML Token」に設定する必要があります。また、ページレット・プロデューサで設定されたサービス・プロデューサに対するリクエストに適切な実行タイムアウトを入力します(デフォルトは30秒)。

登録が完了すると、サービス・プロデューサはページレット・プロデューサ管理コンソールにリソースとして表示され、プロデューサによって公開されたすべてのWSRPポートレットがリソースのページレット・コレクションにリストされます。

65.6.5.3.1 サイト・ページへのページレットの追加

WebCenterサービスを公開しているページレットはすべて、Oracle WebCenter Sitesへのページレットの追加に関する項で説明する手順に従って、WebCenter Sitesのページに追加できます。図65-22に、WebCenter SitesにあるサンプルのAviSportsサイトのページに埋め込まれたドキュメント・マネージャ・サービスを示します。

注意:

自動生成されたWSRPリソースとページレット(サービス・プロデューサに関連付けられているものなど)は変更できません。インジェクタを追加したり、その他の変更を加えるには、編集可能なバージョンを作成する必要があります。ページレット・プロデューサ管理コンソールでリソースを選択し、「コピー」をクリックします。リソースのクローン・バージョンは編集可能であり、インジェクタなどの各種要素を追加してページレットの機能をカスタマイズできます。

図65-22 ドキュメントが埋め込まれたサンプルのAviSportsサイト

65.6.6 アプリケーションのページレットとしての消費(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/)

この項には次のサブセクションが含まれます:

- 第65.6.6.1項「基本のURLマッピング(プロキシ)に対するリソースの作成」

- 第65.6.6.2項「自動ログインの構成」

- 第65.6.6.3項「ページレットの作成」

- 第65.6.6.4「修正構成の作成」

65.6.6.1 基本のURLマッピング(プロキシ)に対するリソースの作成

次の手順によって、ページレット・プロデューサ内の新しいEBSリソースに対して基本的なURLマッピングを設定します。

1. 次の設定を使用して新しいWebリソースを作成します。

- 名前: EBS 11(または任意の名前)

- ソースURL: %EBS_HOST%
UIで使用するURLと間違えられないようにするために、このURLはあまり具体的にしないようにしてください。

- 宛先のURL: /ebs11/(または任意のもの)

- URLリライト: オン

- DHTMLリライト: オン

2. 「保存」をクリックします。

65.6.6.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ソースを調べることによって取得されます。

65.6.6.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」ページが表示されます(ページレットでユーザー・ボールトを使用して資格証明を格納していて、そのページレットにはじめてアクセスする場合を除きます)。このページから「簡易検索」を使用て、ワイルドカード文字として'%'を使ってオーダーを検索できます。

65.6.6.4 修正構成の作成

ページレットの登録後に、プロキシ設定されたマークアップでのURLリライト関連の問題に対応するため、あるいは単にマークアップのスタイルを変更したり不必要な要素を非表示にするために、ページレットで追加機能(パーサー、インジェクタ、クリップなど)が必要になる場合があります。この項では、EBSでOrder InformationのUIを公開するサンプルのページレットに適用された修正構成について説明します。

ポップアップURLリライト用のプラガブル・パーサーの作成

パーサーを使用して、コンテンツを解析したり、リライトする必要のあるURLを検索するために、ビルトイン・ロジックを補足または変更することができますビルトイン・パーサーがURLの識別に失敗した場合は、カスタム・パーサーを使用してこの失敗を修正することができます。EBS 11i UIの場合、この手順は「拡張検索」でのポップアップ処理の修正に必要です。

EBSリソースの下で、次の設定を使用して新しいパーサーを作成します。

- 名前: popupRewriter(または任意の名前)

- URLフィルタ: *.jsp*

- 基本パーサーの使用: オン

- フラグメントの場所

- var _jspDir='(.*?)'; (タイプ静的URL)

- <frame .? src="(.?) (タイプ静的URL)

図65-23にpopupRewriterの設定を示します。

図65-23 popupRewriter

「図65-23 popupRewriter」の説明

フレーム・バストを無効化するインジェクタの作成

インジェクタによって、プロキシ設定されているリソース・ページの指定された場所にコンテンツが挿入されます。コンテンツには、HTML、CSS、JavaScript、およびページレット宣言も含めて、任意のテキストが使用できます。空のインジェクタを使用して、不必要なコンテンツをページから削除することもできます。次のインジェクタはEBSページレットに対して作成されたものですが、その目的は、ユーザーが職責を選択するよう求められる最初のページで発生するページの継承をEBSページレットが行わないようにすることです。

EBSリソースの下で、次の設定を使用して新しいインジェクタを作成します。

- 一般

- 名前: frameBustDisabler

- URLフィルタ: <none>

- MIMEフィルタ: text/html

- 挿入位置: target=_topを置換

- コンテンツ: (テキスト)alt=''

図65-24に、新しいインジェクタのパラメータ設定を示します。

図65-24 frameBustDisablerインジェクタ

iFrameを自動サイズ変更するインジェクタの作成

よりシームレスに消費側ページに統合するには、コンテンツを収められるように動的にサイズ変更することによって、ページレットiFrameがよりインライン・コンテンツらしく動作するように構成できます。詳細は、このドキュメントのIFrameの自動サイズ変更の有効化に関する項を参照してください。

JavaScriptの注入によるクリッピングの設定

ページレットとして公開されたページ要素を抑止するオプションの1つとして、ページレット・プロデューサで使用可能なグラフィカル・クリッピングまたはRegExベースのクリッピングを使用してクリップを作成します。ただし、お薦めできる方法は、プロキシ設定されたページに注入されているカスタム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>

ページレットのスタイル変更用にインジェクタを作成

消費側のページで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>

ページレットのテスト

これでEBS11リソースには、図65-25に示すように、ページレット、カスタム・インジェクタ、およびカスタム・パーサーが含まれるようになりました。

図65-25 EBS11プロジェクト・リソース

「図65-25 EBS11プロジェクト・リソース」の説明

ページレットをテストするには、「ドキュメント」ページを参照し、次に示すURLを使用して、「example.com」をローカル・ホストIDに置き換えます。

http://example.com:8889/pagelets/inject/v2/pagelet/ebs11/order_status?content-type=iframe&csapi=true&ifheight=300px

トラブルシューティング

イメージが適切にレンダリングされない場合は、DHTMLリライトが有効になっていることを確認します。(DHTMLリライトの設定はリソースの「一般」ページにあります。)

最終結果

次のスクリーンショットは、iFrameのページレット・アクセス用のREST URLを使用してWebCenter SitesにあるサンプルのAviSportsサイトのページに埋め込まれたEBS 11i Order Informationの画面を示しています。

イラストレーションjpsdg_sites14.gifの説明

イラストレーションjpsdg_sites15.gifの説明

イラストレーションjpsdg_sites16.gifの説明

第XI部

パーソナライズされたコンテンツの配信

第XI部の内容は次のとおりです。

- 第66章「WebCenter Portalアプリケーションのパーソナライズ」

- 第67章「パーソナライズAPIの外部的な使用」

66 WebCenter Portalアプリケーションのパーソナライズ

WebCenter Portalのパーソナライズによって、ターゲット・コンテンツがユーザーとアプリケーションの両方のコンテキストに基づいて提供されます。また、WebCenter Portalのパーソナライズによって、アプリケーション・フローの宣言型定義を可能にするランタイム・システムと関連ツールが提供されます。

この章では、パーソナライズをWebCenter Portal: Frameworkアプリケーションに統合する方法について説明します。内容は次のとおりです。

- 第66.1項「パーソナライズの概要」

- 第66.2項「アプリケーションへのパーソナライズの統合」

- 第66.3項「チュートリアル: 単純なアプリケーションの作成、テストおよびデプロイ」

- 第66.4項「パーソナライズの拡張」

パーソナライズの詳細は、次を参照してください。

- 付録F「パーソナライズ・サービスに関連するEL」

- "『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のパーソナライズ・サービスの管理に関する項

66.1 パーソナライズの概要

パーソナライズによって、WebCenter Portalアプリケーションで、動的に導出されたユーザー・エクスペリエンスが提供されます。パーソナライズでは、入力データの定義済ソースが評価され、その評価に基づく決定が生成された後、その情報が宣言的に定義されたパーソナライズ・シナリオに適用されます。たとえば、パーソナライズでは、特定のユーザーのアプリケーション体験をターゲットとし、そのユーザーに関する人事管理データベース内の情報に基づいて、コンテンツを戻したり、アプリケーション・フローを変更したりできます。

この項では、パーソナライズの機能と要件の概要について説明します。内容は次のとおりです。

- 第66.1.1項「パーソナライズ・アーキテクチャ」

- 第66.1.2項「パーソナライズ・コンダクタ」

- 第66.1.3項「パーソナライズ・プロパティ・サービス」

- 第66.1.4項「パーソナライズ・プロバイダ」

66.1.1 パーソナライズ・アーキテクチャ

図66-1にアーキテクチャ、即時利用可能なサービス、およびパーソナライズを構成するコンポーネントを示します。これらについて、およびパーソナライズのその他のコンポーネントについては、次を参照してください。

- 第66.1.2項「パーソナライズ・コンダクタ」

- 第66.1.3項「パーソナライズ・プロパティ・サービス」

- 第66.1.4項「パーソナライズ・プロバイダ」

図66-1 パーソナライズ・サービスのアーキテクチャ

「図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.4項「ノード・タイプを使用したシナリオ・フローの指定」および第66.2.3項「ファイル・ベースのシナリオの作成」を参照してください。

66.1.2.2 パーソナライズされたアプリケーション・フロー

コンダクタ内で実行されるシナリオでは、特定のユーザーをターゲットとしたコンテンツを戻すだけでなく、アプリケーション・フローを制御したり、ユーザー・インタフェース・コンポーネントをレンダリングしたり、アプリケーション関連イベントを実行したりすることもできます。コンダクタのパブリックJavaおよび式言語(EL) APIを使用すると、既存のJavaアプリケーションやWebベースのアプリケーションとのシームレスな統合を実現できます。JavaおよびEL APIの使用の詳細は、第67章「パーソナライズAPIの外部的な使用」を参照してください。

66.1.2.3 プロパティ・セットの統合

プロパティ・サービスは、プロパティ・セットを使用してユーザーまたはアプリケーション・データのセットを編成し、プロパティ定義を使用してプロパティ・データにデータ型を割り当てます。プロパティ・サービスを拡張すると、企業のLDAPリポジトリに格納されている他のユーザー・プロファイル・データにアクセスしたり、Oracle MDSなどの他のリポジトリにアクセスしたりできます。プロパティ・サービスとプロパティ・セットの詳細は、第66.1.3項「パーソナライズ・プロパティ・サービス」を参照してください。

66.1.2.4 プロバイダの統合

プロバイダによって、シナリオ内の外部リソースにアクセスする方法が提供されます。コンダクタでは、プロパティ・サービス、Content Serverプロバイダ(CMIS)およびアクティビティ・グラフに対応した3つのデフォルト・プロバイダだけでなく、シナリオ内からのカスタム・プロバイダの実装とそれらへのアクセスを可能にする、拡張可能なアーキテクチャもサポートされます。プロバイダの詳細は、第66.1.4項「パーソナライズ・プロバイダ」を参照してください。

66.1.3 パーソナライズ・プロパティ・サービス

この項では、パーソナライズ・プロパティ・サービスについて説明します。このプロパティ・サービスによって、開発者は単純でスケーラブルな方法を使用して、ユーザー・データにアクセスできるようになります。

この項には次のサブセクションが含まれます:

- 第66.1.3.1項「プロパティ・サービスのアーキテクチャ」

- 第66.1.3.2項「プロパティ・セット」

- 第66.1.3.3項「プロパティ・ロケータ」

66.1.3.1 プロパティ・サービスのアーキテクチャ

プロパティ・サービスはJavaおよびREST APIを使用して、年齢や性別などのユーザーに関するプロパティや、現在時間などのその他の情報の保存と取得を実行します。これらのプロパティは、プロパティ・セットの一部です。プロパティ・セットは、スキーマの定義に使用したり(スキーマによってプロパティのタイプが定義されます)、スキーマを使用しないで要求時に作成することもできます。プロパティ・セットには、アイデンティティ・ストアLDAPサーバー、ファイルなどの様々な場所から取得されたり、SQL問合せを使用して取得されるプロパティを含めることができます。JavaおよびREST APIの使用方法の詳細は、第67章「パーソナライズAPIの外部的な使用」を参照してください。

プロパティ・サービスは、デフォルトのパーソナライズ・キャッシュ(使用可能な場合はCoherenceキャッシュ)を使用し、デフォルトでプロパティ・セットをデータベースに格納します。また、プロパティ・サービスは拡張可能なため、Oracle MDSなどの追加リポジトリを構成することもできます。

図66-2 プロパティ・サービスのアーキテクチャ

「図66-2 プロパティ・サービスのアーキテクチャ」の説明

66.1.3.2 プロパティ・セット

プロパティ・サービスは、プロパティ・セットを使用してユーザーまたはアプリケーション・データのセットを編成し、プロパティ定義を使用してプロパティ・データにデータ型を割り当てます。プロパティ・サービスを拡張して、企業のLDAPリポジトリに格納されている既存のユーザー・プロファイル・データへのアクセスを可能にすることもできます。プロパティ・セットの詳細は、第66.2.2.5項「プロパティ・セットとプロパティ・ロケータの定義」を参照してください。WebCenter Portalアプリケーション用のJDeveloperプロジェクトでは、プロパティ・セット・エディタによって、namespace、PropertySetおよびPropertyの定義を含むプロパティ・ネームスペース・ファイルが作成されます。

66.1.3.3 プロパティ・ロケータ

プロパティ・ロケータは、プロパティの外部ストアにアクセスするためにプロパティ・サービスによって起動されます。たとえば、パーソナライズによって、ユーザーのプロファイル情報にアクセスするためにピープル・コネクションRESTサービスを使用する即時利用可能なピープル・コネクション・プロパティ・ロケータが指定されます。プロパティ・ロケータの詳細は、第66.2.2.5項「プロパティ・セットおよびプロパティ・ロケータの定義」を参照してください。ピープル・コネクション・プロパティ・ロケータの詳細は、第66.1.4.1.4項「ピープル・コネクション・ロケータ」を参照してください。

66.1.4 パーソナライズ・プロバイダ

プロバイダは、外部サービスとの通信を可能にする、コンダクタ用のインタフェース・ポイントです。パーソナライズによって、プロパティ・サービス、Oracle WebCenter Content: Content Serverおよびアクティビティ・グラフに対応したデフォルト・プロバイダと、プロパティ・サービス・プロバイダがピープル・コネクションとの統合を実現するために使用するロケータが提供されます。また、データ・プロバイダおよびファンクション・プロバイダという実装可能な2つのタイプのカスタム・プロバイダも提供されます。

この項では、デフォルト・プロバイダと2つのタイプのカスタム・プロバイダについて説明します。内容は次のとおりです。

- 第66.1.4.1項「即時利用可能なプロバイダ」

- 第66.1.4.2項「カスタム・データ・プロバイダ」

- 第66.1.4.3項「ファンクション・プロバイダ」

66.1.4.1 即時利用可能なプロバイダ

この項では、シナリオ内からアクセスできるデフォルト・プロバイダについて、およびプロパティ・サービス・プロバイダがピープル・コネクションとの統合を実現するために使用するロケータについて説明します。

この項には次のサブセクションが含まれます:

- 第66.1.4.1.1項「プロパティ・サービス・プロバイダ」

- 第66.1.4.1.2項「CMISプロバイダ」

- 第66.1.4.1.3項「アクティビティ・グラフ・プロバイダ」

- 第66.1.4.1.4項「ピープル・コネクション・ロケータ」

66.1.4.1.1 プロパティ・サービス・プロバイダ

プロパティ・サービス・プロバイダを使用すると、プロパティ・サービスとの統合を実現できます。また、このプロバイダを使用すると、特定のプロパティ・セット定義に対応したプロパティ・セットを取得したり、名前でプロパティ・セットを取得したり、プロパティ・セットから特定のプロパティを戻したりできます。プロパティ・サービス・プロバイダの詳細は、第66.2.2.8.1項「プロパティ・サービス・プロバイダの使用」を参照してください。

66.1.4.1.2 CMISプロバイダ

CMISプロバイダは、特にOracle WebCenter Content Serverにより提供される標準ベースのCMIS (Content Management Interoperability Services)コンテンツ・サーバーからコンテンツを取得および検索するサービスを提供します。CMISプロバイダには、結果を簡略化されたフォームに変換するためのユーティリティ関数プロバイダも用意されています。CMISプロバイダの統合の詳細は、第66.2.2.8.2項「CMISプロバイダの使用」を参照してください。コンテンツ・サーバー・プロバイダに対する接続構成の作成と編集の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のRESTサービスのアイデンティティ・アサーション・プロバイダの構成に関する項を参照してください。

66.1.4.1.3 アクティビティ・グラフ・プロバイダ

アクティビティ・グラフ・プロバイダ(ActivityGraphProvider)は、WebCenter内での分析に基づいて、ユーザーの接続に関するニーズに対して推奨事項を提供するアクティビティ・グラフ・エンジン(アクティビティ・グラフ・サービスの基準)との統合を実現します。たとえば、アクティビティ・グラフ・プロバイダのメソッドrecommendedUsersは、指定されたユーザーが接続する可能性のあるユーザーのリストについてアクティビティ・グラフ・エンジンに問い合せます。

アクティビティ・グラフ・エンジンは、エンタープライズ・アプリケーションによって収集されるアクションの中央リポジトリを提供します。アクティビティ・グラフ・サービスとアクティビティ・グラフ・エンジンの詳細は、第45項「アクティビティ・グラフ・サービスの統合」を参照してください。

アクティビティ・グラフ・プロバイダは、WebCenter Portal: Spacesサーバー上で実行しているアクティビティ・グラフの2つのRESTサービスにビルドされているため、WebCenter Portal: Spacesを使用環境にインストールする必要があります。アクティビティ・グラフ・プロバイダのシナリオへの統合の詳細は、第66.2.2.8.3項「アクティビティ・グラフ・プロバイダの使用」を参照してください。アクティビティ・グラフ・プロバイダの接続構成の作成と編集の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のアクティビティ・グラフ・プロバイダの構成に関する項を参照してください。

66.1.4.1.4 ピープル・コネクション・ロケータ

ピープル・コネクション・ロケータは、プロパティ・プロバイダがWebCenterピープル・コネクション・サービスとの統合に使用するILocatorです。ピープル・コネクション・サービスの利点の1つは、WebCenter Portal: Spacesに格納されているユーザー・プロファイル情報にアクセスできることです。ピープル・コネクション・サービスの詳細は、パートVI「ピープル・コネクション・サービスの使用」を参照してください。ピープル・コネクション・ロケータの詳細は、第66.2.2.8.1「プロパティ・サービス・プロバイダの使用」を参照してください。ピープル・コネクション・ロケータの接続構成の作成と編集の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracleピープル・コネクション・ロケータの構成に関する項を参照してください。

66.1.4.2 カスタム・データ・プロバイダ

データ・プロバイダは、コンダクタのアーキテクチャに接続し、なんらかのサービスのかわりに機能するコンポーネントです。データ・プロバイダから戻されたデータは、そのまま(Javaクラスとして)使用することも、連結して同じシナリオに含まれる他のデータ・プロバイダへの入力として使用することもできます。

プロパティ・サービス・プロバイダ、アクティビティ・グラフ・プロバイダおよびCMISプロバイダは、すべてデフォルトで提供されるデータ・プロバイダです。ただし、データ・プロバイダ(oracle.wcps.conductor.provider.IDataProvider)では、従来のシステムや外部データ・ストアとの統合などを目的としたカスタム・データ・プロバイダを記述できる、コンダクタ用の拡張ポイントも提供されます。カスタム(またはデフォルト)・データ・プロバイダは、シナリオ内から「プロバイダの起動」ノードを使用してコールできます。

データ・プロバイダは通常、指定されたユーザーの入力コンテキストで、または外部アプリケーション・データ・セットで(またはその両方で)動作します。パーソナライズには、ユーザー・データまたはアプリケーション・データ用に入力済データ記憶域を提供できるプロパティ・サービスが含まれていて、プロバイダへの入力としてアクセスできます。独自のデータ・プロバイダの作成の詳細は、第66.4.1項「カスタム・プロバイダの追加」を参照してください。

66.1.4.3 ファンクション・プロバイダ

ファンクション・プロバイダ(oracle.wcps.conductor.provider.IFunctionProvider)では、式言語(EL)式を使用して起動できるユーティリティ・メソッド(データの操作と変換、ビジネス・ルールの計算などの用途があります)の作成を目的とした、コンダクタ用の拡張ポイントも提供されます。単純な例は、${strings:concat('string1','string2')})です。CMISプロバイダとアクティビティ・グラフ・プロバイダには、それぞれ、その他のユーティリティとして特に、データ変換を容易にする独自のファンクション・プロバイダがあります。パーソナライズELの詳細は、付録F「パーソナライズ・サービスに関連するEL」を参照してください。

66.2 アプリケーションへのパーソナライズの統合

この項では、Frameworkアプリケーションにパーソナライズを統合する方法について説明します。

この項には次のサブセクションが含まれます:

- 第66.2.1項「パーソナライズの要件」

- 第66.2.2項「JDeveloperでのパーソナライズされたシナリオの作成」

- 第66.2.4項「実行時のターゲット・コンテンツの表示」

66.2.1 パーソナライズの要件

この項では、JDeveloperを使用して、パーソナライズ・サービスを統合するWebCenter Portalアプリケーションを開発するための、設計時のシステム要件と依存性について説明します。パーソナライズの要件、依存性およびオプションの全リストは、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のパーソナライズの前提条件に関する項を参照してください。

- シナリオ内でCMISプロバイダ、アクティビティ・グラフ・プロバイダまたはピープル・コネクション・ロケータを使用している場合は、WebCenter Portal: Spacesをインストールする必要があります。基本的な反復開発の場合、ドメインにWebCenter Portal: Spacesをインストールする必要はありません。

- 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.7項「データ・プロバイダの実装とコール」

- 第66.2.2.8項「デフォルト・プロバイダの使用」

66.2.2.1 プロパティ・ネームスペースの作成

プロパティ・ネームスペース・ファイルには、独自に定義するプロパティ定義とプロパティ・セット定義が含まれます。

JDeveloperでプロパティ・ネームスペース・ファイルを作成するには:

1. JDeveloperで、アプリケーション内からナビゲーション・バーのアプリケーションを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます(図66-3を参照)。

図66-3 「新規ギャラリ」ダイアログ

「図66-3 「新規ギャラリ」ダイアログ」の説明

注意:

「パーソナライズ」カテゴリが表示されない場合は、「すべてのテクノロジ」タブを開いてそれを選択するか、「選択済のテクノロジ」をクリックしてプロジェクトにパーソナライズ・テクノロジを追加します。

2. プロパティ・ネームスペースを選択し、「OK」をクリックします。
「ネームスペースの作成」ダイアログが表示されます(図66-4を参照)。

図66-4 「ネームスペースの作成」ダイアログ

「図66-4 「ネームスペースの作成」ダイアログ」の説明

3. ネームスペースの名前を入力し、「デフォルト・プロパティ定義を含める」チェック・ボックスを選択して、初期のデフォルト・プロパティ定義をネームスペースに追加した後、「OK」をクリックします。
「デフォルトのプロパティ定義を含める」チェック・ボックスでは、初期のデフォルトのプロパティ定義がネームスペース・ファイルに追加されるかどうかを制御します。これらは、IntDef、NumberDef、StringDef、BooleanDef、DateTimeDef、ClobDef、IntArrayDef、NumberArrayDef、StringArrayDef、BooleanArrayDef、DateTimeArrayDef、ClobArrayDefです。プロパティ定義は、必要に応じて後日に削除できます。または、このチェック・ボックスを未選択のままにして、初期のプロパティ定義を使用しないで開始し、必要に応じてシナリオ・エディタでプロパティ定義を作成することもできます。

設計ペインにネームスペース・ファイルがグラフィック形式で表示されます(図66-5を参照)。

図66-5 設計ペイン - ネームスペース定義

「図66-5 設計ペイン - ネームスペース定義」の説明

4. 第66.2.2.2項「プロパティ・セットとプロパティ定義の作成」の説明に従って、シナリオ内で必要になるプロパティ・セットとプロパティを定義します。

66.2.2.2 プロパティ・セットとプロパティ定義の作成

プロパティは、シナリオのフロー内で条件の評価基準にできる人や物に関するデータです。たとえば、プロパティには人の年齢や性別が含まれる場合があります。プロパティ・セットは、簡単に言えば、関連プロパティのコレクションまたはコンテナです。

プロパティ・セットと関連プロパティを定義するには:

1. JDeveloperのアプリケーション内で、設計ペインのネームスペースを右クリックし、「新規プロパティ・セット定義の作成」を選択して、「OK」をクリックします。
「新しいプロパティ・セットの作成」ダイアログが表示されます(図66-6を参照)。

図66-6 「新しいプロパティ・セットの作成」ダイアログ

「図66-6 新しいプロパティ・セットの作成ダイアログ」の説明

2. プロパティ・セットの名前を入力し、「OK」をクリックします。
新しいプロパティ・セットのノードが「デザイン」ペインに表示されます(図66-7を参照)。

図66-7 「デザイン」ペイン - 新しいプロパティ・セット定義

「図66-7 「デザイン」ペイン - 新しいプロパティ・セット定義」の説明

3. プロパティを新しいプロパティ・セットに追加するには、プロパティ・セットを右クリックし、「新規プロパティ定義マッピングの作成」を選択します。
「プロパティ定義の作成」ダイアログが表示されます(図66-8を参照)。

図66-8 プロパティ定義の作成

「図66-8 プロパティ定義の作成」の説明

4. 「プロパティ名」と「定義」(値タイプ)を入力し、「OK」をクリックします。
新しいプロパティ定義を作成するには、「定義」ドロップダウン・リストのNew Definitionを選択します。

新しいプロパティが、プロパティ・セットのグラフィック表現の一部として表示されます(図66-9を参照)。

図66-9 設計ペイン - プロパティ定義

「図66-9 設計ペイン - プロパティ定義」の説明

5. 他に必要なプロパティをプロパティ・セットに追加(または新しいプロパティ・セットを作成)した後、第66.2.2.3項「シナリオ・エディタでの新しいシナリオの作成」の説明に従ってシナリオを作成します。

66.2.2.3 シナリオ・エディタでの新しいシナリオの作成

コンダクタのシナリオ・エディタには、コンダクタによって管理されるシナリオ定義の表示と編集に対応するビジュアル・ツールがあります。シナリオ・エディタはシナリオをファイル形式とビジュアル形式の両方で格納しており、JDeveloper内から使用できます。シナリオを作成する前に、ネームスペースと、シナリオに必要な最低限のプロパティ・セットとプロパティを作成しておく必要があります。

JDeveloperのシナリオ・エディタを使用して新しいシナリオを作成するには:

1. JDeveloperで、アプリケーション内からナビゲーション・バーのアプリケーションを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます(図66-10を参照)。

図66-10 「新規ギャラリ」ダイアログ

「図66-10 「新規ギャラリ」ダイアログ」の説明

注意:

「パーソナライズ」カテゴリが表示されない場合は、「すべてのテクノロジ」タブを開いてそれを選択するか、「選択済のテクノロジ」をクリックしてプロジェクトにパーソナライズ・テクノロジを追加します。

2. コンダクタ・シナリオを選択し、「OK」をクリックします。
「シナリオ定義」ダイアログが表示されます(図66-11を参照)。

図66-11 「シナリオ定義」ダイアログ

「図66-11 「シナリオ定義」ダイアログ」の説明

3. 「新規コンダクタ・シナリオ・ファイルの作成」を選択し、必要に応じて、ファイル名とファイルの格納場所を変更します。シナリオ名の拡張子(.scenarios_diagram)は変更できないことに注意してください。
シナリオ・エディタに新しい「開始」ノードが表示されます(図66-12を参照)。

図66-12 シナリオ・エディタ - 「開始」ノード

「図66-12 シナリオ・エディタ - 「開始」ノード」の説明

4. シナリオにノードを追加するには、新しいノードの追加先となるノードを右クリックし、「次の文を追加」を選択した後、図66-13のようにリストからノード・タイプを選択します。

図66-13 シナリオ・エディタでのノードの追加

「図66-13 シナリオ・エディタでのノードの追加」の説明

新しいノードを右クリックして、ノード・プロパティの設定とフローの拡張に関するオプションを表示します。使用可能なノード・タイプについては、第66.2.2.4項「ノード・タイプを使用したシナリオ・フローの指定」を参照してください。

66.2.2.4 ノード・タイプを使用したシナリオ・フローの指定

シナリオ・エディタでは、(判断に使用される)サブツリーの組合せによってフローが表されるツリー構造の固定レイアウト、およびループや複雑なネストされたif/else判断のフローを表す内部ラベル参照が使用されます。

ノード・タイプ

- 開始: 「開始」ノードは、シナリオの開始地点を定義するルート・レベルのノードです。

- 戻る: 「戻る」ノードは、シナリオの実行を停止し、指定されたEL式の評価結果をコール元に戻します。

- 変数の割当て: 「変数の割当て」ノードでは、現在実行中のシナリオのコンテキスト内にスコープ指定される変数を定義し、それを式によって初期化できます。

- 実行: 「実行」ノードは、戻り値を期待せずに、指定されたEL式を起動します。変数の割当てと同様、式の結果のみがシナリオのコンテキスト内に格納されません。

- 条件/Otherwise: 「条件」ノードは、EL式を評価し、EL式がtrueと評価された場合、そこに含まれる文を実行します。「Otherwise」ブロック内の文は、すべての条件文がfalseと評価された場合のみ実行されます。

- ForEach: 「ForEach」ノードは、要素のコレクションに対してループおよび反復機能を提供するノードの一致ペアです。

- while: 指定されたEL式がtrueと評価されるかぎり、ループおよび反復機能を提供します。

- エラー発生: エラーが発生し、指定されたエラー・メッセージとともに、そのエラーがスローされます

- プロバイダの起動: IDataProviderの名前の実装を起動します。結果は、現在実行されているシナリオのコンテキスト内に格納されます。

- シナリオの起動: 同じネームスペース内の別の名前付きシナリオを起動します。結果は、現在実行されているシナリオのコンテキスト内に格納されます

66.2.2.5 プロパティ・セットとプロパティ・ロケータの定義

プロパティ・エディタでは、プロパティ・サービスによって管理される、プロパティ・セット定義とそれに関連付けられたプロパティ定義を表示および編集できます。プロパティ・エディタは、プロパティ・サービスを通じてデータと通信し、それらを保持します。

プロパティ・セットとそれに含まれるプロパティは、様々な場所に様々な形式で格納できるため、それらの取得にはロケータ機能が必要です。プロパティ・セットのデータを取得し、事前構成済データベースに格納する、デフォルトのプロパティ・セット・ロケータが提供されています。このデフォルト・ロケータは、プロパティ・セット用に他のロケータが指定されなかった場合のみ使用されます。

ピープル・コネクション・サービス用のカスタム・ロケータもデフォルトで提供されます(詳細は第66.1.4.1.4項「ピープル・コネクション・ロケータ」を参照)が、他のデータ・ソース用に追加のロケータを定義することもできます。プロパティとプロパティ・セット用に複数のロケータを定義でき、それらは優先順位に従って定義することもできます。ロケータの実装手順については、第66.4.2項「カスタム・ロケータの追加」を参照してください。

66.2.2.6 ファンクション・プロバイダの実装とコール

マーカー・インタフェースであるIFunctionProviderを使用すると、ユーティリティ・コードにコンダクタ内の式言語サービスからアクセスできるようになります。IFunctionProviderの実装には、注釈付きのpublicメソッドおよびstaticメソッドが含まれます。例66-1にファンクション・プロバイダの例を示します。

例66-1 ファンクション・プロバイダの例

@FunctionProvider
(
prefix="interpreter",
resourceBundle="sample.InterpreterResources",
nameBundleKey="provider.name",
descriptionBundleKey="provider.description"
)
public class InterpreterProvider
implements IFunctionProvider
{

@PublicFunction
(
functionName="english",
descriptionBundleKey="english.description"
)
public static String
interpretEnglish(@PublicParameter(parameterName="phrase",
descriptionBundleKey="phrase.description")String phrase)
{
String result = "Not Understood";

if ("Bonjour".equals(phrase))
{
result = "Hello";
}

return result;
}

@PublicFunction
(
functionName="french",
descriptionBundleKey="french.description"
)
public static String
interpretFrench(@PublicParameter(parameterName="phrase",
descriptionBundleKey="phrase.description")String phrase)
{
String result = "Non compris";

if ("Hello".equals(phrase))
{
result = "Bonjour";
}

return result;
}
}

例66-1のファンクション・プロバイダは、次の式構文を使用してコールします。

${interpreter:english("Bonjour")}
${interpreter:french("Hello")}

次に、例66-1に基づいてファンクション・プロバイダの結果に変数を割り当てる方法を例示します。

<assign-variable>
<variable>greetings</variable>
<expression>${interpreter:english("Bonjour")}</expression>
</assign-variable>

66.2.2.7 データ・プロバイダの実装とコール

データ・プロバイダの実装は、カスタム機能をシナリオの実行に統合するための、より構造化された方法です。ファンクション・プロバイダとは異なり、データ・プロバイダは、コンダクタに組み込まれた接続構成フレームワークにアクセスできるため、環境に固有の構成データを使用できます。次の図は、データ・プロバイダに対するクラスの相互作用を示しています。

図66-14 データ・プロバイダに対するクラスの相互作用

「図66-14 データ・プロバイダに対するクラスの相互作用」の説明

IDataProvider

データ・プロバイダは、IConnectionという抽象的な名前の接続の実装を戻します。通常、このような名前付き接続は、コンダクタの接続構成サービスによって提供される環境の構成に基づいていますが、そうである必要はありません。データ・プロバイダによって構成サービスが使用される場合、その実装では、getConnectionConfigClass()メソッドからoracle.wcps.connection.configuration.AnnotatedConfigurationを拡張するクラスを戻す必要があります。このクラスには、データ・プロバイダに固有の構成データを表す、注釈付きのパブリック・フィールドが含まれている必要があります。

IConnection

oracle.wcps.conductor.provider.IConnectionの実装は、(指定およびデフォルトの)実行可能リソースを戻します。IConnectionの各インスタンスは1つの接続構成を表し、(静的ではない)IDataProviderのインスタンス内で構成する必要があります。

IExecutableResource

oracle.wcps.conductor.provider.IExecutableResourceの実装には、外部システムとの統合コードの大部分が含まれ、そのインスタンスは(静的ではない)IConnectionのインスタンス内で構成する必要があります。IExecutableResourceでは、引数を使用しないexecuteメソッドがデフォルト・メソッドとして提供されますが、IExecutableResourceがシナリオの実行に対して公開されている場合、実装内に注釈付きのカスタム・メソッドを記述できます。たとえば、シナリオから次のカスタム・メソッドを呼び出すことができます。

@PublicFunction
(
functionName="custom",
descriptionBundleKey="customFunction.description"
)
public String callCustomMethod(@PublicParameter(parameterName="customParam",
descriptionBundleKey="customParam.description") String param)
{
return param + " Results";
}

次の例は、カスタム・メソッドを含むプロバイダがどのようにシナリオ内から呼び出されるかを示しています。

<call-provider>
<provider-name>myCustomProvider</provider-name>
<connection-name>${connectionName}</connection-name>
<method-name>custom</method-name>
<variable>searchResults</variable>
<input>
<parameter>
<common:name>customParam</common:name>
<common:value>${someScenarioVariable}</common:value>
</parameter>
</input>
</call-provider>

66.2.2.8 デフォルト・プロバイダの使用

パーソナライズには、シナリオ内で使用する即時利用可能な3つのプロバイダ、プロパティ・サービス・プロバイダ、コンテンツ・サーバー・プロバイダ(CMIS)、およびアクティビティ・グラフが用意されています。この項では、次のサブセクションでこれらのプロバイダをアプリケーションに統合する方法を説明します。

- 第66.2.2.8.1項「プロパティ・サービス・プロバイダの使用」

- 第66.2.2.8.2項「CMISプロバイダの使用」

- 第66.2.2.8.3項「アクティビティ・グラフ・プロバイダの使用」

66.2.2.8.1 プロパティ・サービス・プロバイダの使用

プロパティ・サービス・プロバイダ(oracle.PropertiesServiceProvider)により、パーソナライズ・サーバー・プロパティ・サービスとの統合が実現できます。このプロバイダを使用すると、特定のプロパティ・セット定義に対してプロパティ・セットを取得したり、プロパティ・セットを名前別に取得したり、プロパティ・セットから特定のプロパティを返したりすることができます。ピープル・コネクション・ロケータを使用してプロファイル・データをシナリオに統合している場合は、それを使用する前にプロパティ・サービスを構成する必要があります。ピープル・コネクション・ロケータの詳細は、第66.1.4.1.4項「ピープル・コネクション・ロケータ」を参照してください。プロパティ・サービス・プロバイダの構成の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracleピープル・コネクション・ロケータの構成に関する項を参照してください。

66.2.2.8.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.8.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>

条件/Otherwise

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>

ForEach

要素のコレクションに対してループおよび反復機能を提供します。

<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>

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.userPrincipal.name} is unauthorized to execute this scenario.</message>
</raise-error>

例66-2 ファイル・ベースのシナリオの例

<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 実行時のターゲット・コンテンツの表示

この項では、WebCenter Portal: SpacesおよびWebCenter Portal: Frameworkアプリケーションの実行時に、コンテンツ・プレゼンタを使用してターゲット・コンテンツをユーザーに表示する方法について説明します。また、REST APIを使用して、コンテンツを提供するための独自のユーザー・インタフェースを作成する方法についても説明します。

この項には次のサブセクションが含まれます:

- 第66.2.4.1項「コンテンツ・プレゼンタを使用したコンテンツの提供」

- 第66.2.4.2項「カスタム・ユーザー・インタフェースを使用したコンテンツの提供」

66.2.4.1 コンテンツ・プレゼンタを使用したコンテンツの提供

コンテンツ・プレゼンタは、コンダクタの動的コンテンツ問合せ生成機能と密接に統合されており、動的コンテンツの単純な表面化を可能にします。アプリケーション内でのコンテンツ・プレゼンタの使用の詳細は、第28章「コンテンツ・プレゼンタ表示テンプレートの作成」を参照してください。

WebCenter Portal: Spacesで式言語式を使用してパーソナライズ・サーバーのシナリオにアクセスする方法については、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のページのパーソナライズに関する項を参照してください。

66.2.4.2 カスタム・ユーザー・インタフェースを使用したコンテンツの提供

REST APIを使用すると、コンテンツ・プレゼンタを使用せずに、コンテンツを提供するための独自のユーザー・インタフェースを作成できます。REST APIの詳細は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

66.3 チュートリアル: 単純なアプリケーションの作成、テストおよびデプロイ

この項では、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. リストから「Fusion Webアプリケーション(ADF)」を選択して、「OK」をクリックします。
Fusion Webアプリケーション(ADF)の作成ウィザードが表示されます(図66-15を参照)。

図66-15 Hello_Applicationの作成 - 手順1

「図66-15 Hello_Applicationの作成 - 手順1」の説明

4. 「アプリケーション名」に「Hello_Application」と入力します。

5. ステップ5の4でPortalプロジェクトのウィザード・ページが表示されるまで「次へ」をクリックします。
「プロジェクト・テクノロジ」タブに、アプリケーション用にインストールできるテクノロジのリストが表示されます。

図66-16 Hello_Applicationの作成 - 手順4

「図66-16 Hello_Applicationの作成 - 手順4」の説明

6. Portalプロジェクトに対して選択したテクノロジのリストに「Webcenter Personalization」を追加し、「終了」をクリックして、構成済のHello_Applicationアプリケーションを作成します。

2. JDeveloperの統合サーバー(統合WLS)のデフォルト・ドメインを構成します。
ドメインは自動的に拡張され、パーソナライズ・コンポーネントの実行に必要なサーバー・アーティファクト(つまり、パーソナライズ・コンダクタとプロパティ・サービス)が含まれます。

1. 「表示」メニューから「アプリケーション・サーバー・ナビゲータ」を選択し、「アプリケーション・サーバー」ツリー・ノードを開いてIntegratedWeblogicServerを表示します。
現在のステータスは(ドメイン未構成)になっています。

2. IntegratedWeblogicServerを右クリックしてコンテキスト・メニューを表示し、「デフォルト・ドメインの作成」を選択します。

図66-17 アプリケーション・サーバー・ナビゲータ - デフォルト・ドメインの作成

「図66-17 アプリケーション・サーバー・ナビゲータ - デフォルト・ドメインの作成」の説明

3. 入力が求められたら、管理者パスワードとして「weblogic1」と入力して「OK」をクリックします。
ステータスは(ドメインの作成中)と表示され、「メッセージ・ログ」ウィンドウに、ドメインの作成中であることを示す出力が表示されます。ドメインの作成が完了するまで待機します。この操作の完了には時間がかかる場合があります。完了すると、メッセージ・ログに「統合Weblogicドメインの処理が正常に完了しました。」と表示されます。

4. IntegratedWeblogicServerを右クリックしてコンテキスト・メニューを表示し、「サーバー・インスタンスの起動」を選択してサーバーを起動します。
「Running: IntegratedWeblogicServer - Log」ビューが表示され、サーバーが起動しはじめると出力が表示されます。サーバーの起動が終了するまで待ちます。この操作の完了には時間がかかる場合があります。終了したら、IntegratedWeblogicServerメッセージ・ログに 「IntegratedWebLogicServerが起動しました」と表示されます。

図66-18 アプリケーション・サーバー・ナビゲータ - サーバーの起動

「図66-18 アプリケーション・サーバー・ナビゲータ - サーバーの起動」の説明

3. 実行中のサーバー上でパーソナライズ(WCPS)トラスト・サービスを構成して、JDeveloperのIntegratedWebLogicServerドメインに対してシングル・サインオン(SSO)を有効にします。

1. 「ツール」メニューから「WCPSトラスト・サービスの構成」を選択します。
このタスクを実行するための外部ツールの実行が開始され、その出力が「WCPSトラスト・サービスの構成 - ログ」ビューにダイレクトされます。構成が完了するまで待機します。これには時間がかかる場合があります。完了すると、ログに「ドメインを再起動する必要のある変更が行われました。」すべてのドメイン・サーバーを再起動してください。というメッセージが表示されます。

図66-19 WCPSトラスト・サービスの構成

「図66-19 WCPSトラスト・サービスの構成」の説明

2. 「実行中: IntegratedWeblogicServer - ログ」ビューの「終了」をクリックして、アプリケーション・サーバーを停止します。
シャットダウンが完了すると、「プロセスが終了しました。」というメッセージが表示されます。その後、手順2cの操作を行ってサーバーを再起動できます。

4. アプリケーション・サーバーのパーソナライズ・コンダクタ・コンポーネントへのアプリケーションURL接続を構成します。

1. 「アプリケーション」メニューから「アプリケーション・プロパティ」を選択します。
「アプリケーション・プロパティ」ダイアログが表示されます。

図66-20 「アプリケーション・プロパティ」ダイアログ - パーソナライズ・サーバー接続の構成

「図66-20 「アプリケーション・プロパティ」ダイアログ - パーソナライズ・サーバー接続の構成」の説明

2. 「パーソナライズ・サーバー」カテゴリを選択し、「URL接続」ドロップダウン・リストから<新しいURL接続...>を選択します。
「URL接続の作成」ダイアログが表示されます(図66-21を参照)。

図66-21 「URL接続の作成」ダイアログ - コンダクタのURL接続

「図66-21 「URL接続の作成」ダイアログ - コンダクタのURL接続」の説明

3. (デフォルトの)データ・エントリ・フィールドに、次のように値を入力して、接続を作成します。

フィールド名

値

名前

Conductor

URLエンドポイント

http://localhost:7101/wcps/api/conductor/resourceIndex

認証タイプ

基本

ユーザー名

weblogic

パスワード

weblogic1(ステップ2cで指定した管理者パスワード)

レルム

WCPS

4. 「接続のテスト」をクリックします。
「ステータス」に「接続が正常に確立されました。」と表示されます。

5. 「OK」をクリックして、コンダクタURL接続を作成します。

6. パーソナライズ・サーバー・ページで、デフォルトのシナリオ・ネームスペースをアプリケーション名(Hello_Application)に設定したままにして、「アプリケーション・プロパティ」ダイアログで「OK」をクリックして設定を受け入れます。

5. アプリケーションでパーソナライズ・サービス(WCPS)ライブラリを使用できるように、Hello_Applicationのサーバー・デプロイメント・ディスクリプタを構成します。

1. アプリケーション・ナビゲータで、Portal/Web Content/WEB-INFフォルダを開きます。

2. weblogic.xmlデプロイメント・ディスクリプタをダブルクリックして開きます。
WebLogicディスクリプタ・エディタが表示されます。

3. 「ライブラリ」カテゴリを選択します。

4. プラス(+)アイコンをクリックして、新しいライブラリ・エントリを作成します。

5. 表の「ライブラリ名」列に、次のライブラリ名を入力します。

wcps-services-client-web-lib

図66-22 WebLogicディスクリプタ・エディタ - WCPSライブラリの追加

「図66-22 WebLogicディスクリプタ・エディタ - WCPSライブラリの追加」の説明

6. 完了したら、「ファイル」メニューから「保存」を選択して、weblogic.xmlディスクリプタを保存します。

6. パーソナライズ・コンダクタによって呼び出されたときに文字列Hello Worldを戻す、単純なhello_worldシナリオを作成します。

1. アプリケーション・ナビゲータでPortalプロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」が表示されます。

2. 「現在のプロジェクト・テクノロジ」タブから、「パーソナライズ」カテゴリを選択します。

3. コンダクタ・シナリオを選択し、「OK」をクリックします。
新規コンダクタ・シナリオ・ダイアログが表示されます。

図66-23 新規コンダクタ・シナリオ・ダイアログ

「図66-23 新規コンダクタ・シナリオ・ダイアログ」の説明

4. 「新規コンダクタ・シナリオ・ファイルを作成する」オプションを選択し、新しいシナリオ・ファイル名をhello_world.scenarios_diagramと入力し、「OK」をクリックしてシナリオを作成します。

5. シナリオ・エディタの「ダイアグラム」ビューで「開始」ノードを右クリックし、「次の文を追加」→「戻る」を選択します。
「戻る」ノードが追加および接続されます。

6. 「戻る」ノードを右クリックし、「式の設定」を選択します。
シナリオ式ビルダーが表示されます(図66-24を参照)。

図66-24 シナリオ式ビルダー

「図66-24 シナリオ式ビルダー」の説明

7. 「式」のテキスト領域に次のEL式を入力し、「OK」をクリックします。

${'Hello World'}

シナリオの図は、図66-25のようになります。

図66-25 シナリオ・エディタ - hello_worldシナリオ

「図66-25 シナリオ・エディタ - hello_worldシナリオ」の説明

8. 「ファイル」メニューから「保存」を選択して、hello_world.scenarios_diagramを保存します。

7. hello_worldシナリオを呼び出して結果を表示するJSPページを作成します。
JSPページを作成する前に、JSPページに必要なリソースを含むいくつかのライブラリをPortalプロジェクトに追加する必要があります。

1. アプリケーション・ナビゲータでPortalプロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。
「プロジェクト・プロパティ」ダイアログが表示されます。

2. 「ライブラリとクラスパス」カテゴリを選択し、「ライブラリの追加」をクリックします。
「ライブラリの追加」ダイアログが表示されます(図66-26を参照)。

図66-26 「プロジェクト・プロパティ」ダイアログ - 拡張ライブラリの追加

「図66-26 「プロジェクト・プロパティ」ダイアログ - 拡張ライブラリの追加」の説明

3. リストから次の拡張ライブラリを選択し、「OK」をクリックして追加します。

Webcenter Personalization Client

4. 完了したら、「プロジェクト・プロパティ」ダイアログで「OK」をクリックします。
これで、パーソナライズ・コンダクタ上でhello_worldシナリオを実行して結果を表示するJSPページを作成できるようになります。

5. アプリケーション・ナビゲータでPortalプロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」が表示されます。

6. 「現在のプロジェクト・テクノロジ」タブから、「JSP」カテゴリを選択します。

7. アイテム・リストから「JSP」を選択し、「OK」をクリックします。
「JSPの作成」ダイアログが表示されます(図66-27を参照)。

図66-27 「JSPの作成」ダイアログ

「図66-27 「JSPの作成」ダイアログ」の説明

8. 「ファイル名」にhello_world.jspと入力し、「OK」をクリックしてJSPページを作成します。

9. 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のかわりに使用することによって、シングル・サインオンの制約を回避できます。

10. 「ファイル」メニューから「保存」を選択して、hello_world.jspを保存します。

8. 最後に、Hello_Applicationを構築してデプロイするために、アプリケーション・ナビゲータでhello_world.jspページの実行可能アーティファクトを右クリックし、「実行」を選択します。
JDeveloperによって、次のようないくつかのバックグラウンド・プロセスが順番に開始されます。

- アプリケーションの構築

- 統合サーバーの起動(まだ起動していない場合)

- デフォルト・ドメインへのアプリケーション・アーティファクト(パーソナライズ・アーティファクトを含む)のデプロイ

- 外部Webブラウザの起動によるアーティファクトhello_world.jspの表示

図66-28 アプリケーション・ナビゲータ - アプリケーションの構築とデプロイ

「図66-28 アプリケーション・ナビゲータ - アプリケーションの構築とデプロイ」の説明

生成されたhello_world.jsp JSPページがブラウザに表示されます。

図66-29 ブラウザに表示されたHello_Applicationのhello_world.jspページ

「図66-29 ブラウザに表示されたHello_Applicationのhello_world.jspページ」の説明

66.4 パーソナライズの拡張

この項では、カスタム・プロバイダおよびロケータを追加することによって、どのようにアプリケーション・フローまたはコンテンツの新しいパーソナライズ方法を提供できるかについて説明します。

この項の内容は、次のとおりです。

- 第66.4.1項「カスタム・プロバイダの追加」

- 第66.4.2項「カスタム・ロケータの追加」

66.4.1 カスタム・プロバイダの追加

プロバイダによって提供されるパーソナライズの拡張ポイントを使用すると、カスタム・ファンクション・プロバイダやカスタム・データ・プロバイダを追加できます。表66-2は、ファンクション・プロバイダとデータ・プロバイダに使用できる拡張ポイントを示しています。

表66-2 拡張ポイント

拡張

説明

oracle.wcps.provider.IFunctionProvider

データの操作と変換、ビジネス・ルールの計算などの用途に使用でき、EL式を使用して呼び出すことができるユーティリティ・メソッドの作成を目的とした、コンダクタ用のファンクション・プロバイダ拡張ポイントです。単純な例は、${strings:concat('string1','string2')}です

oracle.wcps.provider.IDataProvider

コンダクタ用のデータ・プロバイダ拡張ポイントです。カスタム・データ・プロバイダを記述して、従来のシステムや外部データ・ストアとの統合を実現できます。

66.4.1.1 AnnotatedConfigurationクラスの拡張

AnnotatedConfigurationクラスでは、データ・プロバイダに必要な接続パラメータが記述されます。このクラスは次の場所にあります。

場所: \Oracle\Middleware\jdeveloper\webcenter\modules\wcps-services_11.1.1.4.0\connections-service-1.0.jar

このクラスを拡張し、カスタム・プロバイダで必要になる可能性がある他のプロパティを追加する必要があります。まずこのクラスを作成し、それに基づいて他のコンポーネントを作成します(例66-3を参照)。

例66-3 HelloWorldConnectionConfig

import oracle.wcps.connection.annotation.ConnectionProperty;
import oracle.wcps.connection.configuration.AnnotatedConfiguration;

@ConnectionConfiguration
(connectionType="hello.world.provider.connection")
@L10n
(bundle="demo.provider.resources.HelloWorldProviderResources")
public class HelloWorldConnectionConfig extends AnnotatedConfiguration
{
@ConnectionProperty(propertyName="sampleProperty", required=true)
String sampleProperty;
}

66.4.1.2 必要なインタフェースの実装

IMetadata

場所: \Oracle\Middleware\jdeveloper\webcenter\modules\wcps-services_11.1.1.4.0\conductor-server-1.0.0.0.jar

public interface IMetadata
{
public String getName();
public Set<? extends IMetadata> getMetadata();
}

次に、IMetadataインタフェースを実装します。これによって情報がツールに提供され、基本的には、HelloWorldConnectionConfigクラス内の情報をメタデータとして表現する接続パラメータが表面化されます(例66-4を参照)。HelloWorldConnectionConfigクラス内のプロパティのそれぞれは子メタデータ・オブジェクトになります。これは単純な構造ではそれほど直観的ではありませんが、「モデル」内の他のコンポーネントに関連するネストされたクラスが接続構成に含まれている場合には役立ちます。

例66-4 HelloWorldConfigMetadata

public class HelloWorldConfigMetadata implements IMetadata
{
private String name;
private Object value ;
private Map<String, IMetadata> childMDataMap = new HashMap<String, IMetadata>();

public HelloWorldConfigMetadata(HelloWorldConnectionConfig config)
{
name = config.name;
}

public HelloWorldConfigMetadata(String name, Object value)
{
this.name = name;
this.value = value;
}

public void addMetadata(IMetadata childMetadata)
{
childMDataMap.put(childMetadata.getName(), childMetadata);
}

public String getName()
{
return name;
}

public Object getValue()
{
return value;
}

public Object getProperty(String propName)
{
IMetadata md = childMDataMap.get(propName);
if (md != null)
{
return ((HelloWorldConfigMetadata)md).getValue();
}
return null;
}

public Set<IMetadata> getMetadata()
{
Set<IMetadata> rv = new HashSet<IMetadata>();
Set<String> childKeySet = childMDataMap.keySet();
for (String key : childKeySet)
{
rv.add(childMDataMap.get(key));
}

return rv;
}

public Properties getProperties()
{
Properties props = new Properties();
Set<String> childKeySet = childMDataMap.keySet();
for (String key : childKeySet)
{
HelloWorldConfigMetadata cmd =
(HelloWorldConfigMetadata)childMDataMap.get(key);
props.put(key, cmd.getValue());
}
return props;
}

@Override
public String toString()
{
return (name + ", properties: " + getProperties());
}
}

IExecutableResource

実行可能リソースは、コンダクタによる実行が可能なメソッドとして指定するための注釈が付いたpublicメソッドを含むクラスです。これらのメソッドは、直接コードを実行する場合もあれば、コールを外部RESTサービスに委任する場合もあります。

場所:

\Oracle\Middleware\jdeveloper\webcenter\modules\wcps-services_11.1.1.4.0\conductor-server-1.0.0.0.jar

public interface IExecutableResource
{
public Object execute();
}

ExecutableResourcesでは、この注釈により、実行するその他のメソッドを指定できます。リソース・バンドルの使用方法に注意してください(詳細は、リソース・バンドルに関する項を参照)。任意の数のExecutableResourcesを作成し、それらを接続に追加できます(例66-5を参照)。

例66-5 SayHelloExecutableResource

package demo.provider;

import oracle.wcps.annotation.PublicFunction;
import oracle.wcps.annotation.PublicParameter;
import oracle.wcps.provider.IExecutableResource;

public class SayHelloExecutableResource implements IExecutableResource
{
// This method will execute if no specific method is given

public Object execute()
{
return "Hello from my custom provider";
}

// This method can be named explicitly in a Scenario to be invoked

@PublicFunction(functionName = "sayHello",
descriptionBundleKey = "provider.method.sayHello.description")
public String sayHello(@PublicParameter(parameterName = "user",
descriptionBundleKey =
"provider.parameter.sayHello.user.description")
String user)
{
return "Hello, " + user + ".  Enjoy using the new Personalization feature!";
}
}

IConnection

IExecutableResourcesとIMetadataを実装したら、次は実際の接続オブジェクトを構成できます。各接続にはそれぞれ固有の構成パラメータ・セットがあるため、プロバイダに複数の接続オブジェクトが存在している可能性もあります(例66-6を参照)。

場所:

\Oracle\Middleware\jdeveloper\webcenter\modules\wcps-services_11.1.1.4.0\conductor-server-1.0.0.0.jar

public interface IConnection
{
public void setScenarioContext(IScenarioContext context);

public Map<String, IExecutableResource> getNamedResources();

public IExecutableResource getDefaultResource();

public Map<String, IMetadata> getConnectionMetadata();

}

例66-6 HelloWorldConnection

package demo.provider;

import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import java.util.concurrent.ConcurrentHashMap;

import oracle.wcps.provider.IConnection;
import oracle.wcps.provider.IExecutableResource;
import oracle.wcps.provider.IMetadata;
import oracle.wcps.scenario.IScenarioContext;

public class HelloWorldConnection implements IConnection
{
private IScenarioContext scenarioContext;

private Map<String, IExecutableResource> executableResources =
new ConcurrentHashMap<String, IExecutableResource>();

private IExecutableResource defaultResource;
private HelloWorldConfigMetadata configMetadata;
private Map<String, IMetadata> metadataMap = new HashMap<String, IMetadata>();

/**
* Create metadata about this connection from the incoming config
* @param config
*/
public HelloWorldConnection(HelloWorldConnectionConfig config)
{
configMetadata = new HelloWorldConfigMetadata(config);

// Loop over config properties and add as child metadata
Iterator<Map.Entry<String, Object>> iter =
config.entrySet().iterator();
while (iter.hasNext())
{
Map.Entry<String, Object> entry = iter.next();
String key = entry.getKey();
Object value = entry.getValue();
if (value != null)
{
configMetadata.addMetadata(new HelloWorldConfigMetadata(key,
value));
}
}
metadataMap.put(config.name, configMetadata);

// Now create the executable resources for this connection
createExecutableResources(config);
}

public void setScenarioContext(IScenarioContext scenarioContext)
{
this.scenarioContext = scenarioContext;
}

public Map<String, IExecutableResource> getNamedResources()
{
return executableResources;
}

public IExecutableResource getDefaultResource()
{
return defaultResource;
}

public Map<String, IMetadata> getConnectionMetadata()
{
return metadataMap;
}

/**
* Create the IExecutableResources for this connection. An executable resource
* is a class having one or more public methods.
* @param config
*/
private void createExecutableResources(HelloWorldConnectionConfig config)
{
// NOTE: you may or may not need to use the config information with your executable resources

IExecutableResource helloResource = new SayHelloExecutableResource();
IExecutableResource addingResource = new AddingExecutableResource();

executableResources.put("HelloResource", helloResource);
executableResources.put("AddingResource", addingResource);

// Make one of them the default
defaultResource = helloResource;

}
}

HelloWorldConnectionのインスタンスは、HelloWorldConnectionConfig内で指定した接続タイプ(connectionType="hello.world.provider.connection")に対応する、provider-connections.xmlファイル内のエントリごとにインスタンス化されます。

IDataProvider

これで、すべてを最上位レベルのプロバイダ・クラスHelloWorldProviderに入れる準備が整いました。これは、コンダクタが接続を構成し、IExecutableResourceを呼び出すためのアクセス・ポイントです。

場所:

\Oracle\Middleware\jdeveloper\webcenter\modules\wcps-services_11.1.1.4.0\conductor-server-1.0.0.0.jar

「プロジェクト・プロパティ」→「ライブラリとクラスパス」→「Jar/ディレクトリの追加」→(前述のconductor-server-1.0.0.0.jarを指定)

例66-7 IDataProvider

public interface IDataProvider
{
/**
* Returns a map of connections keyed by connection name
*/
public Map<String, ? extends IConnection> getNamedConnections();

/**
* Returns the "default" connection to use
*/
public IConnection getDefaultConnection();

/**
* Called by the framework to set the current scenario context.
*/
public void setScenarioContext(IScenarioContext scenarioContext);

/**
* Return the annotated class used to house connection configuration.
*
* <p>
* Returning null disables this feature.
*/
public Class<?> getConnectionConfigClass();

/**
* If getConnectionConfigClass returns a valid configuration class,
* configurations are provided through this method, if any exist.
* @param configurations The collection of configurations.
*/
public void setConnectionConfigurations(List<?> configurations);
}

必要な注釈:

@ContextualProvider
(
contextName="HelloWorldProvider",
resourceBundle="demo.provider.resources.HelloWorldProviderResources",
nameBundleKey="provider.name",
descriptionBundleKey="provider.description"
)

詳細は、次のリソース・バンドルに関する例66-8を参照してください。

例66-8 リソース・バンドル

package demo.provider;

import java.util.Collections;
import java.util.List;
import java.util.Map;

import java.util.concurrent.ConcurrentHashMap;

import oracle.wcps.annotation.ContextualProvider;
import oracle.wcps.provider.IConnection;
import oracle.wcps.provider.IDataProvider;
import oracle.wcps.scenario.IScenarioContext;
@ContextualProvider
(
contextName="HelloWorldProvider",
resourceBundle="demo.provider.resources.HelloWorldProviderResources",
nameBundleKey="provider.name",
descriptionBundleKey="provider.description"
)
public class HelloWorldProvider implements IDataProvider
{
// Never used, but there is a required public method to set this.
private IScenarioContext scenarioContext;

// ConnectionConfigurations may come in via classes/META-INF/connection-providers.xml
private List<HelloWorldConnectionConfig> connectionConfigurations;

// Each IConnection is uniquely identified via the AGConnectionConfig
private static Map<String, HelloWorldConnection> connections =
new ConcurrentHashMap<String, HelloWorldConnection>();

// One of the connections will become the default
private IConnection defaultConnection;

public HelloWorldProvider() {
super();
}

/**
* Return a map of all our Connections, keyed by config.name.
* @return
*/
public Map<String, HelloWorldConnection> getNamedConnections()
{
return connections;
}

/**
* One of the connections will be designated the default
* @return
*/
public IConnection getDefaultConnection()
{
return defaultConnection;
}

/**
* Used to hold parameters specific to a given scenario
* @param scenarioContext
*/
public void setScenarioContext(IScenarioContext scenarioContext)
{
this.scenarioContext = scenarioContext;
}

/**
* The config class is specific to each data provider
* @return
*/
public Class<HelloWorldConnectionConfig> getConnectionConfigClass()
{
return HelloWorldConnectionConfig.class;
}

/**
* Create a HelloWorldConnection instance from each of the incoming configs.
* These configs are created when the provider-connections.xml file is loaded.
* @param configs
*/
public void setConnectionConfigurations(List<?> configurations)
{
List<HelloWorldConnectionConfig> configs = (List<HelloWorldConnectionConfig>)configurations;
for (HelloWorldConnectionConfig config : configs)
{
// Create a HelloWorldConnection from the config
HelloWorldConnection connection = new HelloWorldConnection(config);
if (config.isDefault)
{
defaultConnection = connection;
}
connections.put(config.name, connection);
}
}
}

66.4.1.3 リソース・ファイルの作成

これらのファイルも、クラスと同じディレクトリに格納されるため、最終的なJARファイルに追加されます。ファイルの場所は、HelloWorldProvider:bundle="demo.provider.resources.HelloWorldProviderResources"で指定したパッケージ名に対応している必要があります。

File name: HelloWorldProviderResources.properties

File contents: provider.name=Hello World
provider.description=Data provider for Hello World

provider.parameter.sayHello.user.description=Method to say hello to a named user
provider.parameter.addTwoIntegers.int1.description=First number to add
provider.parameter.addTwoIntegers.int2.description=Second number to add

66.4.1.4 コンダクタへのデータ・プロバイダの関連付け

説明に従って接続を構成します

META-INF/servicesディレクトリ内にファイルを作成する(最終的なjarファイルに追加されるように、クラスと同じディレクトリ構造にします)ことによって、コンダクタのプロバイダを指定します。

file name: oracle.wcps.provider.IDataProvider
file contents: demo.provider.HelloWorldProvider (fully-qualified name of your provider)

66.4.1.5 シナリオでのデータ・プロバイダの起動

リソース名がHelloWorldConnectionsのソース・コード内と同じであることに注意してください。

例66-9 プロバイダをコールするシナリオ

<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>HelloWorldProvider</provider-name>
<connection-name>HelloWorldConnection</connection-name>
<resource-name>HelloResource</resource-name>
<method-name>sayHello</method-name>
<variable>providerResults</variable>
<input>
<parameter>
<common:name>user</common:name>
<common:value>cindymc</common:value>
</parameter>
</input>
</call-provider>
<return>
<expression>${providerResults}</expression>
</return>
</body>
<name>TestMyProviderScenario</name>
</scenario:scenario>

66.4.2 カスタム・ロケータの追加

この項では、カスタム・ロケータを追加することによって、パーソナライズされたWebCenter Portalアプリケーションを拡張する方法について説明します。

この項には次のサブセクションが含まれます:

- 第66.4.2.1項「プロパティ・ロケータの理解」

- 第66.4.2.2項「必要なインタフェースの実装」

- 第66.4.2.3項「セキュリティの実装」

- 第66.4.2.4項「プロパティ・セット定義の作成」

- 第66.4.2.5項「すべての要素の結合」

- 第66.4.2.6項「プロパティ・ロケータの起動」

66.4.2.1 プロパティ・ロケータの理解

プロパティ・ロケータは、プロパティの外部ストアにアクセスするためにプロパティ・サービスによって起動されます。たとえば、パーソナライズによって、ユーザーのプロファイル情報にアクセスするためにピープル・コネクションRESTサービスを使用する即時利用可能なPeoplePropertyLocatorが指定されます。このロケータはコンダクタ/シナリオによって直接起動されるものではなく、プロパティ・セット・サービスによってインスタンス化され、その後、プロパティやプロパティ・セットを取得するためのコールが基礎となるロケータ実装に委譲されます。

次の項の例では、独自のBookPropertyLocatorを作成して、図書館内の本をタイトルで検索し、その属性を、Bookオブジェクトを表すために作成したプロパティ・セット内にロードする方法について説明します。

この例の実装手順は、主に2つあります。

1. Bookのプロパティ・セットを定義し、その情報をプロパティ・セット・サービスに通知します

2. IPropertyLocatorを実装して、Bookオブジェクトからプロパティをロードします。

66.4.2.2 必要なインタフェースの実装

場所:

\Oracle\Middleware\jdeveloper\webcenter\modules\wcps-services_11.1.1.4.0\properties-common-1.0.0.0.jar

public interface IPropertyLocator
{
public void loadProperties(IContext context, IPropertySet propertySet,
IPropertySetDefinition propertySetDefinition,
List<IPropertyName> propertyNames);

public void storeProperties(IContext context,  propertySet,
IPropertySetDefinition propertySetDefinition,
List<IPropertyName> propertyNames);

public void removeProperties(IContext context,  propertySet, List<IPropertyName> propertyNames);

public void removeProperties(IContext context,  nameSpaceName, IPropertySetDefinitionName name);

public IPagedList<IPropertySet> filter(IContext context,  nameSpaceName,
IPropertySetDefinitionName setDefinitionName, PropertySetFilterContext filterContext);

public int count(IContext context,  nameSpaceName, PropertySetExpression expression);
}

66.4.2.3 セキュリティの実装

認証に使用されるIContextオブジェクトは、プロパティ・サービスから渡されます。資格証明にアクセスする2つの方法を、次に示します。

- リクエストの使用: HttpServletRequest request = context.getProperty(IContext.HTTP_REQUEST_KEY)

- ユーザーとパスワードの使用: String user = context.getProperty(IContext.USERNAME_KEY); String pw = context.getProperty(IContext.PASSWORD_KEY);

66.4.2.4 プロパティ・セット定義の作成

この項では、ロケータとともに使用するPropertySetDefinitionの作成方法について説明します。

次の手順に従って、PropertySetDefinitionを作成します。

1. ソース・ファイルに対する新しいJDeveloperプロジェクトを作成します。

2. 必要なパーソナライズ・クラスをプロジェクト・クラスパスに追加します。

1. プロジェクト名を右クリックし、「プロジェクト・プロパティ」を選択します。

2. 「ライブラリとクラスパス」を選択し、「ライブラリの追加」を選択します。

3. 検索するライブラリの名前を入力し(IPropertyLocatorなど)、表示されたらその名前を選択します。

4. ソース・コードから参照する必要があるその他のクラスに対して、これらの手順を繰り返します。

3. プロジェクトをコンパイルし、それをJARファイルにデプロイします。

4. JARファイルを、/DefaultDomain/locator-extensions-library/WEB-INF/libにあるパーソナライズ拡張ディレクトリにコピーします。

66.4.2.5 すべての要素の結合

この項では、プロパティ・ロケータ、データ・オブジェクトおよびデータ層を実装する方法について説明します。

IPropertyLocatorの実装

(デモを簡素化するために、読取り専用になっています)

/**
* Our locator will be read-only
*/
public class BookPropertyLocator implements IPropertyLocator
{
// Let's delegate all the hard work to a BookPropertyDAO
private BookPropertyDAO dao;

// Must have a public default constructor, since the Property Service instantiates
// this

public BookPropertyLocator()
{
// todo: show how connection properties could be initialized and passed in
dao = new BookPropertyDAO();
}

/**
* Load property values, optionally returning only a subset of those.
* @param iPropertySet The PropertySet into which the retrieved values will be loaded
* @param iPropertySetDefinition The PropertySetDefinition defining the 'shape' of the properties
* @param list List of PropertyNames to load.  If null, all will be loaded.
*/
public void loadProperties(IContext context, IPropertySet iPropertySet,
IPropertySetDefinition iPropertySetDefinition,
List<IPropertyName> list)
{
try
{
// Delegate to BookProperDAO
dao.loadProperties(iPropertySet, list);
} catch (Exception e)
{
throw new RuntimeException("Cannot load properties ", e);
}
}

/**
* Filter properties; load/return those properties that only match the filter criteria.
* @param iNameSpaceName
* @param iPropertySetDefinitionName
* @param propertySetFilterContext
* @return
*/
public IPagedList<IPropertySet> filter(IContext context, INameSpaceName iNameSpaceName,
IPropertySetDefinitionName iPropertySetDefinitionName,
PropertySetFilterContext propertySetFilterContext)
{
return null;   // todo: possibly implement for demo
}

public int count(IContext context, INameSpaceName iNameSpaceName,
PropertySetExpression propertySetExpression)
{
return 0;
}

// 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");
}
}

プロパティ値を取得するためのデータ・アクセス・オブジェクトを実装します

/**
* Data access class, to load books from a backing store (perhaps a database or
* some REST service)
*/
class BookPropertyDAO
{
// Generate the library that will provide our backing store.
static
{
Library.generateLibrary();
}

/**
* Assume the name of the PropertySet is the title of the book.
* @param propertySet
* @param list
*/
void loadProperties(IContext context, IPropertySet propertySet,
List<IPropertyName> list) throws Exception
{
String title = propertySet.getPropertySetName().getName();
Book book = Library.getBook(title);
loadProperties(book, propertySet, list);
}

private void loadProperties(IContext context, Book book, IPropertySet propertySet,
List<IPropertyName> propertyNames) throws Exception
{
// Loop over all property names, create a Property value, and add it to the Property set
for (IPropertyName pname : propertyNames)
{
// System.err.println("Getting property: " + pname + ", with name: " + pname.getName());
String value = book.getProperty(pname.getName());
if (value != null)
{
addProperty(value, pname, propertySet);
}
}
}

private void addProperty(IContext context, String value, IPropertyName pname,
IPropertySet propertySet)
{

IProperty<String> ps =
Property.<String>builder().withProperty(pname, value).buildWithOutValidation();
propertySet.putProperty(pname, ps);
}
}

データ層(図書館内の本)を実装します。

/**
* Simple class to demonstrate loading properties.  It could be improved by adding
* support for non-String attributes (Date, arrays, etc) and using Java Bean
* Introspection/Reflection to get the property values.
*/
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)
{
// Here, we could use introspection on the Book class, but since there are only
// three properties, we can code it simpler
if (propName.equals("ISBN"))
{
return getISBN();
}
if (propName.equals("title"))
{
return getTitle();
}
if (propName.equals("author"))
{
return getAuthor();
}
return null;  // todo: perhaps throw Exception here
}
}

/**
* Class to generate a library of Books
*/
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);
}
}

66.4.2.6 プロパティ・ロケータの起動

PropertyLocatorはプロパティ・サービスによって起動され、それ自体がPropertiesServiceProviderの一部として機能します。次のように、シナリオ内でこのプロバイダに対してGetPropertiesメソッドを呼び出すことができます。

<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>

67 パーソナライズAPIの外部的な使用

クライアントは、次の項の説明に従ってJava APIまたはパブリックREST APIを使用することによって、WebCenterパーソナライズのパブリックAPIにアクセスできます。

- 第67.1項「Java APIの使用」

- 第67.2項「プロパティ・サービスREST APIの使用」

- 第67.3項「プロパティ・サービスREST API」

- 第67.4項「コンダクタREST APIの使用」

- 第67.5項「ELを使用したパーソナライズ・クライアント・サービスのコール」

67.1 Java APIの使用

表67-1に示すサービス・インタフェースは、リモート・コンダクタAPIを定義します。

表67-1 リモート・コンダクタAPI

インタフェース/サービス

説明

oracle.wcps.conductor.services.IScenariosService

格納されているシナリオの全般的な管理、取得および実行

oracle.wcps.conductor.services.INamespaceService

コンダクタによって認識されている、格納されているネームスペースの全般的な管理

oracle.wcps.conductor.services.IProviderService

コンダクタ・サーバーによって認識されているプロバイダ・メタデータの取得

パーソナライズJava APIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスのWebCenterのJavaDocを参照してください。

67.2 プロパティ・サービスREST APIの使用

この項では、プロパティ・サービスのREST APIを使用して、次のような基本的なパーソナライズ・タスクをプログラムから実行する方法の例を示します。

- ネームスペースの作成

- プロパティ・セット定義の表示と作成

- プロパティ定義の表示と作成

- シナリオの表示、作成および実行

- データ・プロバイダの詳細の表示

この項には次のサブセクションが含まれます:

- 第67.2.1項「プロパティ・サービスのリソース索引へのアクセス」

- 第67.2.2項「プロパティ・サービスを使用したネームスペースの作成」

- 第67.2.3項「プロパティ・サービスを使用したネームスペース内のプロパティ・セット定義の表示」

- 第67.2.4項「プロパティ・サービスを使用したネームスペース内のプロパティ定義の作成」

- 第67.2.5項「プロパティ・サービスを使用したネームスペース内のプロパティ定義の表示」

- 第67.2.6項「プロパティ・サービスを使用したネームスペース内のプロパティ・セット定義の作成」

- 第67.2.7項「プロパティ・サービスを使用したネームスペース内のプロパティ・セットの作成」

- 第67.2.8項「プロパティ・サービスを使用したネームスペース内のプロパティ・セットの表示」

- 第67.2.9項「コンダクタのリソース索引へのアクセス」

- 第67.2.10項「コンダクタを使用したネームスペースへのアクセス」

- 第67.2.11項「コンダクタを使用したネームスペース内のシナリオの作成」

- 第67.2.12項「コンダクタを使用したネームスペース内のシナリオの表示」

- 第67.2.13項「コンダクタを使用したシナリオの実行」

- 第67.2.14項「コンダクタを使用したネームスペース内のデータ・プロバイダの表示」

- 第67.2.15項「コンダクタを使用したネームスペース内の詳細なデータ・プロバイダ・プロパティの表示」

- 第67.2.16項「コンダクタを使用したネームスペース内のデータ・プロバイダ接続の表示」

- 第67.2.17項「コンダクタを使用したネームスペース内のデータ・プロバイダ接続リソースの表示」

- 第67.2.18項「コンダクタを使用したネームスペース内のデータ・プロバイダ接続リソース・メソッドの表示」

- 第67.2.19項「コンダクタを使用したネームスペース内のファンクション・プロバイダの表示」

67.2.1 プロパティ・サービスのリソース索引へのアクセス

プロパティ・サービスのリソース索引のレスポンスには、プロパティ・サービスの他のリソースにアクセスするためのリンクとテンプレートが含まれます。プロパティ・サービスのリソース索引にアクセスするためのリクエストとレスポンスについては、第67.3.1.1項「リソース索引」を参照してください。

67.2.2 プロパティ・サービスを使用したネームスペースの作成

REST HTTPインタフェースを使用してオブジェクトを作成するには、リクエスト・メソッドをPOSTに設定し、値application/xmlを含むヘッダーcontent-typeを追加する必要があります。プロパティ・サービスを使用してネームスペースを作成するためのリクエストとレスポンスについては、第67.3.2.1項「ネームスペースの作成」を参照してください。

67.2.3 プロパティ・サービスを使用したネームスペース内のプロパティ・セット定義の表示

プロパティ・サービスを使用してネームスペース内のプロパティ・セット定義を表示するためのリクエストとレスポンスについては、第67.3.4.3項「すべてのプロパティ・セット定義の取得」を参照してください。

67.2.4 プロパティ・サービスを使用したネームスペース内のプロパティ定義の作成

プロパティ・サービスを使用してネームスペース内のプロパティ定義を作成するためのリクエストとレスポンスについては、第67.3.3.1項「プロパティ定義の作成 - 整数プロパティ定義の作成」を参照してください。

67.2.5 プロパティ・サービスを使用したネームスペース内のプロパティ定義の表示

プロパティ・サービスを使用してネームスペース内のプロパティ定義を表示するためのリクエストとレスポンスについては、第67.3.3.6項「すべてのプロパティ定義の取得」を参照してください。

67.2.6 プロパティ・サービスを使用したネームスペース内のプロパティ・セット定義の作成

プロパティ・サービスを使用してネームスペース内のプロパティ・セット定義を作成するためのリクエストとレスポンスについては、第67.3.4.1項「プロパティ・セット定義の作成」を参照してください。

67.2.7 プロパティ・サービスを使用したネームスペース内のプロパティ・セットの作成

プロパティ・サービスを使用してネームスペース内のプロパティ・セットを作成するためのリクエストとレスポンスについては、第67.3.5.1項「プロパティ・セットの作成」を参照してください。

67.2.8 プロパティ・サービスを使用したネームスペース内のプロパティ・セットの表示

プロパティ・サービスを使用してネームスペース内のプロパティ・セットを表示するためのリクエストとレスポンスについては、第67.3.5.5項「すべてのプロパティ・セットの取得」を参照してください。

67.2.9 コンダクタのリソース索引へのアクセス

次の例では、ベスト・プラクティスのガイドラインに準拠するように、リンク・テンプレートとリソース索引を変更します。

Request URI:
GET http://localhost:8891/wcps/api/conductor/resourceIndex

Response:
<resourceIndex resourceType="urn:oracle:wcps:conductor:resourceIndex">
<links>
<link resourceType="urn:oracle:wcps:conductor:namespaces" rel="urn:oracle:wcps:conductor:namespaces" href="http://localhost:8891/wcps/api/conductor/namespaces" capabilities="urn:oracle:restframework:read urn:oracle:restframework:create"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D" resourceType="urn:oracle:wcps:conductor:namespace" rel="urn:oracle:wcps:conductor:namespace" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/scenarios?tag={tag}&amp;projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}" resourceType="urn:oracle:wcps:conductor:scenarioMetadatas" rel="urn:oracle:wcps:conductor:scenarioMetadatas" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/scenarios/%7Bscenario-name%7D?projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}" resourceType="urn:oracle:wcps:conductor:scenario" rel="urn:oracle:wcps:conductor:scenario" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/dataProviders?projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}" resourceType="urn:oracle:wcps:conductor:provider:dataProviders" rel="urn:oracle:wcps:conductor:provider:dataProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/dataProviders/%7Bprovider-name%7D?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProvider" rel="urn:oracle:wcps:conductor:provider:dataProvider" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/functionProviders?projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}" resourceType="urn:oracle:wcps:conductor:provider:functionProviders" rel="urn:oracle:wcps:conductor:provider:functionProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/functionProviders/%7Bcategory-name%7D:%7Bfunction-name%7D?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:functionProvider" rel="urn:oracle:wcps:conductor:provider:functionProvider" capabilities="urn:oracle:restframework:read"/>
</links>
</resourceIndex>

67.2.10 コンダクタを使用したネームスペースへのアクセス

Request URI:
GET  http://localhost:8891/wcps/api/conductor/namespaces

Response:
<namespaces resourceType="urn:oracle:wcps:conductor:namespaces">
<links>
<link resourceType="urn:oracle:wcps:conductor:resourceIndex" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/resourceIndex" capabilities="urn:oracle:restframework:read"/>
<link resourceType="urn:oracle:wcps:conductor:namespaces" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces" capabilities="urn:oracle:restframework:read urn:oracle:restframework:create"/>
</links>
<items>
<namespace resourceType="urn:oracle:wcps:conductor:namespace">
<links>
<link resourceType="urn:oracle:wcps:conductor:namespaces" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces" capabilities="urn:oracle:restframework:read"/>
<link resourceType="urn:oracle:wcps:conductor:namespace" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/people.connections.person" capabilities="urn:oracle:restframework:read urn:oracle:restframework:delete"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/people.connections.person/scenarios?tag={tag}&amp;projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}" resourceType="urn:oracle:wcps:conductor:scenarioMetadatas"
rel="urn:oracle:wcps:conductor:scenarioMetadatas" href="http://localhost:8891/wcps/api/conductor/namespaces/people.connections.person/scenarios" capabilities="urn:oracle:restframework:read urn:oracle:restframework:create"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/people.connections.person/dataProviders?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProviders"
rel="urn:oracle:wcps:conductor:provider:dataProviders" href="http://localhost:8891/wcps/api/conductor/namespaces/people.connections.person/dataProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/people.connections.person/functionProviders?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:functionProviders"
rel="urn:oracle:wcps:conductor:provider:functionProviders" href="http://localhost:8891/wcps/api/conductor/namespaces/people.connections.person/functionProviders" capabilities="urn:oracle:restframework:read"/>
</links>
<name>people.connections.person</name>
</namespace>
<namespace resourceType="urn:oracle:wcps:conductor:namespace">
<links>
<link resourceType="urn:oracle:wcps:conductor:namespaces" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces" capabilities="urn:oracle:restframework:read"/>
<link resourceType="urn:oracle:wcps:conductor:namespace" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/JDEV" capabilities="urn:oracle:restframework:read urn:oracle:restframework:delete"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/JDEV/scenarios?tag={tag}&amp;projection={projection}&amp;startIndex={startIndex}&amp;itemsPerPage={itemsPerPage}" resourceType="urn:oracle:wcps:conductor:scenarioMetadatas"
rel="urn:oracle:wcps:conductor:scenarioMetadatas" href="http://localhost:8891/wcps/api/conductor/namespaces/JDEV/scenarios" capabilities="urn:oracle:restframework:read urn:oracle:restframework:create"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/JDEV/dataProviders?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProviders"
rel="urn:oracle:wcps:conductor:provider:dataProviders" href="http://localhost:8891/wcps/api/conductor/namespaces/JDEV/dataProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/JDEV/functionProviders?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:functionProviders"
rel="urn:oracle:wcps:conductor:provider:functionProviders" href="http://localhost:8891/wcps/api/conductor/namespaces/JDEV/functionProviders" capabilities="urn:oracle:restframework:read"/>
</links>
<name>JDEV</name>
</namespace>
</items>
</namespaces>

67.2.11 コンダクタを使用したネームスペース内のシナリオの作成

Request URI:
POST http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/scenarios

Request Body:
<scenarioMetadata>
<scenario xmlns:ns2="http://xmlns.oracle.com/webcenter/conductor/common/1.0.0" xmlns:ns3="http://xmlns.oracle.com/webcenter/conductor/scenarios/1.0.0">
<body>
<assign-variable>
<variable>var1</variable>
<expression>${ScenarioContext.scenarioRequest.parameters['param1']}</expression>
</assign-variable>
<assign-variable>
<variable>var2</variable>
<expression>${var1}</expression>
</assign-variable>
<return>
<expression>${var2}</expression>
</return>
</body>
<name>FeatureCompleteScenario</name>
<comments>FeatureCompleteScenario comments</comments>
<tags>
<tag>FeatureScenario</tag>
<tag>ScenarioExample</tag>
<tag>Simple</tag>
</tags>
</scenario>
</scenarioMetadata>

Response:
<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 template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/scenarios/FeatureCompleteScenario?projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}" resourceType="urn:oracle:wcps:conductor:scenario-metadata" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/scenarios" capabilities="urn:oracle:restframework:read urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete urn:oracle:restframework:execute"/>
<link resourceType="urn:oracle:wcps:conductor:scenario" rel="alternate" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/scenarios/FeatureCompleteScenario/definition" capabilities="urn:oracle:restframework:read"/>
</links>
<status>PUBLISHED</status>
<created-author>anonymous</created-author>
<created-date-time>2010-05-11T15:52:30.729-07:00</created-date-time>
<updated-author>anonymous</updated-author>
<updated-date-time>2010-05-11T15:52:30.729-07:00</updated-date-time>
<scenario>
<type>Scenario</type>
<body>
<assign-variable>
<type>VariableAssignment</type>
<variable>var1</variable>
<expression>${ScenarioContext.scenarioRequest.parameters['param1']}</expression>
</assign-variable>
<assign-variable>
<type>VariableAssignment</type>
<variable>var2</variable>
<expression>${var1}</expression>
</assign-variable>
<return>
<type>Return</type>
<expression>${var2}</expression>
</return>
</body>
<name>FeatureCompleteScenario</name>
<comments>FeatureCompleteScenario comments</comments>
<tags>
<tag>FeatureScenario</tag>
<tag>ScenarioExample</tag>
<tag>Simple</tag>
</tags>
<input-parameters/>
</scenario>
</scenarioMetadata>

67.2.12 コンダクタを使用したネームスペース内のシナリオの表示

Request URI:
GET http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/scenarios

Response:
<scenarios 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 template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/scenarios?tag={tag}&projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}"
resourceType="urn:oracle:wcps:conductor:scenarios" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/scenarios" capabilities="urn:oracle:restframework:read urn:oracle:restframework:read urn:oracle:restframework:create"/>
</links>
<items>
<scenarioMetadata>
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/scenarios/FeatureCompleteScenario?projection={projection}&startIndex={startIndex}&itemsPerPage={itemsPerPage}" resourceType="urn:oracle:wcps:conductor:scenario-metadata" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/scenarios/FeatureCompleteScenario" capabilities="urn:oracle:restframework:read urn:oracle:restframework:read urn:oracle:restframework:update urn:oracle:restframework:delete urn:oracle:restframework:execute"/>
<link resourceType="urn:oracle:wcps:conductor:scenario" rel="alternate" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/scenarios/FeatureCompleteScenario/definition"
capabilities="urn:oracle:restframework:read"/>
</links>
<status>PUBLISHED</status>
<created-author>anonymous</created-author>
<created-date-time>2010-05-11T15:52:30.729-07:00</created-date-time>
<updated-author>anonymous</updated-author>
<updated-date-time>2010-05-11T15:52:30.729-07:00</updated-date-time>
<scenario>
<type>Scenario</type>
<name>FeatureCompleteScenario</name>
<comments>FeatureCompleteScenario comments</comments>
<tags>
<tag>FeatureScenario</tag>
<tag>ScenarioExample</tag>
<tag>Simple</tag>
</tags>
<input-parameters/>
</scenario>
</scenarioMetadata>
</items>
</scenarios>

67.2.13 コンダクタを使用したシナリオの実行

Request URI:
POST http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/scenarios/FeatureCompleteScenario

Request Body:
<parameters>
<parameter>
<name>param1</name>
<value>param1Value</value>
</parameter>
<parameter>
<name>param2</name>
<value>param2Value</value>
</parameter>
</parameters>

Response:
<conductorExecutionResults resourceType="urn:oracle:wcps:conductor:genericType">
<type>java.lang.String</type>
<results xsi:type="xs:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">param1Value</results>
</conductorExecutionResults>

67.2.14 コンダクタを使用したネームスペース内のデータ・プロバイダの表示

デフォルトでは、ActivityGraphProvider、CMISDataProviderおよびPropertiesProviderという3つのIDataProviderの実装が提供されます。これらは、どのネームスペース内でもアクセス可能です。

Request URI:
http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders

Response:
<dataProviders resourceType="urn:oracle:wcps:conductor:provider:dataProviders">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProviders" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders" capabilities="urn:oracle:restframework:read"/>
</links>
<items>
<dataProvider resourceType="urn:oracle:wcps:conductor:provider:dataProvider">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProviders" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/CMISProvider?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProvider" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/CMISProvider" capabilities="urn:oracle:restframework:read"/>
</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 template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProviders" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/ActivityGraphProvider?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProvider" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/ActivityGraphProvider" capabilities="urn:oracle:restframework:read"/>
</links>
<name>ActivityGraphProvider</name>
<localizedName>Activity Graph</localizedName>
<localizedDescription>Activity Graph Adapter</localizedDescription>
</dataProvider>
<dataProvider resourceType="urn:oracle:wcps:conductor:provider:dataProvider">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProviders" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProvider" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider" capabilities="urn:oracle:restframework:read"/>
</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>

67.2.15 コンダクタを使用したネームスペース内の詳細なデータ・プロバイダ・プロパティの表示

Request URI:
GET http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider

Response:
<dataProvider resourceType="urn:oracle:wcps:conductor:provider:dataProvider">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProviders" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProvider" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/dataProviders/%7Bprovider-name%7D/connections?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:providerConnections" rel="urn:oracle:wcps:conductor:provider:providerConnections" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/dataProviders/%7Bprovider-name%7D/connections/%7Bconnection-name%7D?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:providerConnection" rel="urn:oracle:wcps:conductor:provider:providerConnection" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/dataProviders/%7Bprovider-name%7D/connections/%7Bconnection-name%7D/resources?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:connectionResources" rel="urn:oracle:wcps:conductor:provider:connectionResources" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/dataProviders/%7Bprovider-name%7D/connections/%7Bconnection-name%7D/resources/%7Bresource-name%7D?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:connectionResource" rel="urn:oracle:wcps:conductor:provider:connectionResource" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/dataProviders/%7Bprovider-name%7D/connections/%7Bconnection-name%7D/resources/%7Bresource-name%7D/methods?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" rel="urn:oracle:wcps:conductor:provider:resourceMethods" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/%7Bnamespace%7D/dataProviders/%7Bprovider-name%7D/connections/%7Bconnection-name%7D/resources/%7Bresource-name%7D/methods/%7Bmethod-name%7D?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" rel="urn:oracle:wcps:conductor:provider:resourceMethod" capabilities="urn:oracle:restframework:read"/>
</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 template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProvider" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:providerConnections" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections" capabilities="urn:oracle:restframework:read"/>
</links>
<items>
<providerConnection resourceType="urn:oracle:wcps:conductor:provider:providerConnection">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:providerConnections" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:connectionMetadata" rel="urn:oracle:wcps:conductor:provider:connectionMetadata" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:providerConnection" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection" capabilities="urn:oracle:restframework:read"/>
</links>
<name>LocalServerConnection</name>
</providerConnection>
</items>
</providerConnections>
</dataProvider>

67.2.16 コンダクタを使用したネームスペース内のデータ・プロバイダ接続の表示

Request URI:
GET http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections

Response:
<providerConnections resourceType="urn:oracle:wcps:conductor:provider:providerConnections">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:dataProvider" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:providerConnections" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections" capabilities="urn:oracle:restframework:read"/>
</links>
<items>
<providerConnection resourceType="urn:oracle:wcps:conductor:provider:providerConnection">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:providerConnections" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:connectionMetadata" rel="urn:oracle:wcps:conductor:provider:connectionMetadata" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/metadata" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:providerConnection" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection" capabilities="urn:oracle:restframework:read"/>
</links>
<name>LocalServerConnection</name>
<connectionResources resourceType="urn:oracle:wcps:conductor:provider:connectionResources">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:providerConnection" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:connectionResources" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources" capabilities="urn:oracle:restframework:read"/>
</links>
<items>
<connectionResource resourceType="urn:oracle:wcps:conductor:provider:connectionResource">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:connectionResources" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:connectionResource" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource" capabilities="urn:oracle:restframework:read"/>
</links>
<name>GetPropertiesResource</name>
</connectionResource>
</items>
</connectionResources>
</providerConnection>
</items>
</providerConnections>

67.2.17 コンダクタを使用したネームスペース内のデータ・プロバイダ接続リソースの表示

Request URI:
GET http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources

Response:
<connectionResources resourceType="urn:oracle:wcps:conductor:provider:connectionResources">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:providerConnection" rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:connectionResources" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources" capabilities="urn:oracle:restframework:read"/>
</links>
<items>
<connectionResource resourceType="urn:oracle:wcps:conductor:provider:connectionResource">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:connectionResources"
rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:connectionResource" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource" capabilities="urn:oracle:restframework:read"/>
</links>
<name>GetPropertiesResource</name>
<resourceMethods resourceType="urn:oracle:wcps:conductor:provider:resourceMethods">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:connectionResource"
rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethods" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods" capabilities="urn:oracle:restframework:read"/>
</links>
<items>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethods"
rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(namespace,definition,set,property)" capabilities="urn:oracle:restframework:read"/>
</links>
<name>GetProperty</name>
<uniqueName>GetProperty(namespace,definition,set,property)</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethods"
rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)" capabilities="urn:oracle:restframework:read"/>
</links>
<name>GetProperty</name>
<uniqueName>GetProperty(definition,set,property)</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethods"
rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/execute()" capabilities="urn:oracle:restframework:read"/>
</links>
<name>execute</name>
<uniqueName>execute()</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethods"
rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(definition,set)" capabilities="urn:oracle:restframework:read"/>
</links>
<name>GetPropertySet</name>
<uniqueName>GetPropertySet(definition,set)</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethods"
rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySet(namespace,definition,set)" capabilities="urn:oracle:restframework:read"/>
</links>
<name>GetPropertySet</name>
<uniqueName>GetPropertySet(namespace,definition,set)</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethods"
rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(definition)" capabilities="urn:oracle:restframework:read"/>
</links>
<name>GetPropertySets</name>
<uniqueName>GetPropertySets(definition)</uniqueName>
<parameters/>
</resourceMethod>
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethods"
rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetPropertySets(namespace,definition)" capabilities="urn:oracle:restframework:read"/>
</links>
<name>GetPropertySets</name>
<uniqueName>GetPropertySets(namespace,definition)</uniqueName>
<parameters/>
</resourceMethod>
</items>
</resourceMethods>
</connectionResource>
</items>
</connectionResources>

67.2.18 コンダクタを使用したネームスペース内のデータ・プロバイダ接続リソース・メソッドの表示

Request URI:
GET http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)

Response:
<resourceMethod resourceType="urn:oracle:wcps:conductor:provider:resourceMethod">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethods"
rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)?projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:resourceMethod" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/dataProviders/oracle.PropertiesServiceProvider/connections/LocalServerConnection/resources/GetPropertiesResource/methods/GetProperty(definition,set,property)" capabilities="urn:oracle:restframework:read"/>
</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>

67.2.19 コンダクタを使用したネームスペース内のファンクション・プロバイダの表示

Request URI:
GET http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/functionProviders

Response:
<functionProviders resourceType="urn:oracle:wcps:conductor:provider:functionProviders">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_Namespace/functionProviders?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders" capabilities="urn:oracle:restframework:read"/>
</links>
<items>
<functionProvider
resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders"
rel="urn:oracle:webcenter:parent" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/collections:new?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/collections:new"
capabilities="urn:oracle:restframework:read"/>
</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 template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders"
rel="urn:oracle:webcenter:parent"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/cmisfunction:getCMISQueryForDocIDs?projection={project
ion}" resourceType="urn:oracle:wcps:conductor:provider:functionProvider"
rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/cmisfunction:getCMISQueryForDocIDs" capabilities="urn:oracle:restframework:read"/>
</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 template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders"
rel="urn:oracle:webcenter:parent"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/cmisfunction:getCMISQueryForDocIDsFromFullID?
projection={projection}" resourceType="urn:oracle:wcps:conductor:provider:functionProvider" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/cmisfunction:getCMISQueryForDocIDsFromFullID"
capabilities="urn:oracle:restframework:read"/>
</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 template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders"
rel="urn:oracle:webcenter:parent"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/agfunction:filterRecsByScore?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" rel="self" href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/agfunction:filterRecsByScore"
capabilities="urn:oracle:restframework:read"/>
</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 template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders"
rel="urn:oracle:webcenter:parent"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/agfunction:getContentIDs?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/agfunction:getContentIDs"
capabilities="urn:oracle:restframework:read"/>
</links>
<category>agfunction</category>
<example>${agfunction:getContentIDs(agResults,filterClassURN)}</example>
<localizedDescription>Extract content IDs from input
objects</localizedDescription>
<name>getContentIDs</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders"
rel="urn:oracle:webcenter:parent"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/collections:append?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/collections:append"
capabilities="urn:oracle:restframework:read"/>
</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 template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders"
rel="urn:oracle:webcenter:parent"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/collections:merge?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/collections:merge"
capabilities="urn:oracle:restframework:read"/>
</links>
<category>collections</category>
<example>${collections:merge(allCollections)}</example>
<localizedDescription>Concatenates all provided collections in the order in
which they are provided.</localizedDescription>
<name>merge</name>
<parameters/>
<returnType>java.util.Collection</returnType>
</functionProvider>
<functionProvider resourceType="urn:oracle:wcps:conductor:provider:functionProvider">
<links>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders"
rel="urn:oracle:webcenter:parent"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/collections:sort?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/collections:sort"
capabilities="urn:oracle:restframework:read"/>
</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 template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProviders"
rel="urn:oracle:webcenter:parent"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders" capabilities="urn:oracle:restframework:read"/>
<link template="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/agfunction:getDocumentIDs?projection={projection}"
resourceType="urn:oracle:wcps:conductor:provider:functionProvider" rel="self"
href="http://localhost:8891/wcps/api/conductor/namespaces/FeatureReview_
Namespace/functionProviders/agfunction:getDocumentIDs"
capabilities="urn:oracle:restframework:read"/>
</links>
<category>agfunction</category>
<example>${agfunction:getDocumentIDs(agResults,dDocNameOnly)}</example>
<localizedDescription>Extract content IDs from input
objects</localizedDescription>
<name>getDocumentIDs</name>
<parameters/>
<returnType>java.util.List</returnType>
</functionProvider>
</items>
</functionProviders>

67.3 プロパティ・サービスREST API

この項には次のサブセクションが含まれます:

- 第67.3.1項「プロパティ・サービスのリソース索引」

- 第67.3.2項「ネームスペースCRUD」

- 第67.3.3項「プロパティ定義の作成、取得、更新および削除」

- 第67.3.4項「プロパティ・セット定義の作成、取得、更新および削除」

- 第67.3.5項「プロパティ・セットの作成、取得、更新および削除」

- 第67.3.6項「プロパティCRUD」

- 第67.3.7項「JSONペイロード」

- 第67.3.8項「例外」

- 第67.3.9項「問合せパラメータ」

- 第67.3.10項「検索式」

67.3.1 プロパティ・サービスのリソース索引

この項には次のサブセクションが含まれます:

- 第67.3.1.1項「ResourceIndex」

- 第67.3.2.1項「ネームスペースの作成」

- 第67.3.2.2項「ネームスペースの取得」

- 第67.3.2.3項「ネームスペースの更新」

- 第67.3.2.4項「ネームスペースの削除」

- 第67.3.2.5項「すべてのネームスペースの取得」

- 第67.3.2.6項「すべてのネームスペースの削除」

67.3.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"
} ]
}

67.3.2 ネームスペースCRUD

この項には次のサブセクションが含まれます:

- 第67.3.2.1項「ネームスペースの作成」

- 第67.3.2.2項「ネームスペースの取得」

- 第67.3.2.3項「ネームスペースの更新」

- 第67.3.2.4項「ネームスペースの削除」

- 第67.3.2.5項「すべてのネームスペースの取得」

- 第67.3.2.6項「すべてのネームスペースの削除」

67.3.2.1 ネームスペースの作成

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"
} ]
}

67.3.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"
} ]
}

67.3.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"

67.3.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

67.3.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"
} ]
}

67.3.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

67.3.3 プロパティ定義CRUD

この項には次のサブセクションが含まれます:

- 第67.3.3.1項「プロパティ定義の作成 - 整数プロパティ定義の作成」

- 第67.3.3.2項「プロパティ定義の作成 - 整数配列プロパティ定義の作成」

- 第67.3.3.3項「プロパティ定義の取得」

- 第67.3.3.4項「プロパティ定義の更新」

- 第67.3.3.5項「プロパティ定義の削除」

- 第67.3.3.6項「すべてのプロパティ定義の取得」

- 第67.3.3.7項「すべてのプロパティ定義の削除」

67.3.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"
} ]
}

67.3.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"
} ]
}

67.3.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"
} ]
}

67.3.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"

67.3.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

67.3.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"
} ]
}

67.3.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

67.3.4 プロパティ・セット定義の作成、取得、更新および削除

この項には次のサブセクションが含まれます:

- 第67.3.4.1項「プロパティ・セット定義の作成」

- 第67.3.4.2項「プロパティ・セット定義の取得」

- 第67.3.4.3項「すべてのプロパティ・セット定義の取得」

- 第67.3.4.4項「すべてのプロパティ・セット定義の削除」

67.3.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"
} ]
}

67.3.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

67.3.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"
} ]
}

67.3.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

67.3.5 プロパティ・セットCRUD

この項には次のサブセクションが含まれます:

- 第67.3.5.1項「プロパティ・セットの作成」

- 第67.3.5.2項「プロパティ・セットの取得」

- 第67.3.5.3項「プロパティ・セットの更新」

- 第67.3.5.4項「プロパティ・セットの削除」

- 第67.3.5.5項「すべてのプロパティ・セットの取得」

- 第67.3.5.6項「すべてのプロパティ・セットの削除」

67.3.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"
} ]
}

67.3.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"
} ]
}

67.3.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"

67.3.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

67.3.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"
} ]
}

67.3.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

67.3.6 プロパティCRUD

この項には次のサブセクションが含まれます:

- 第67.3.6.1項「プロパティの作成」

- 第67.3.6.2項「プロパティの取得」

- 第67.3.6.3項「プロパティの更新」

- 第67.3.6.4項「プロパティの削除」

- 第67.3.6.5項「すべてのプロパティの削除」

67.3.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"
} ]
}

67.3.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"
} ]
}

67.3.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"

67.3.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

67.3.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

67.3.7 JSONペイロード

JSON形式のプロパティ値は、concreteTypeフィールドの名前を使用して値タイプを示します。次の表では、プロパティ定義タイプおよびJavaデータ型をconcreteTypeの値にマップします。

表67-2 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

67.3.8 例外

- オプティミスティックな並行性がプロパティ・サーバーで無効になっている場合、If-Matchリクエスト・ヘッダーは不要です。有効になっている場合は、If-Matchヘッダーの値がレスポンス・ヘッダーETagに送信する値となります。

- リクエスト・ヘッダーX-Oracle-RF-Tokenを送信しなかった場合、403レスポンス・ステータスが戻されます。このトークンの値は、/resouceIndexリクエストへのレスポンスとして送信される値となります。

- 使用中のネームスペース、プロパティ定義またはプロパティ・セット定義を削除しようとすると、412レスポンス・ステータスが戻されます。

67.3.9 問合せパラメータ

表67-3に、サポートされる問合せパラメータとそのデフォルト値を示します。

表67-3 問合せパラメータ

問合せパラメータ名

説明

デフォルト値

その他の特殊な値

q

この値は検索式となります

なし

なし

startIndex

ページ内の最初の要素の索引を表します

0

なし

itemsPerPage

ページ内に含まれるアイテムの数を表します

10

なし

dataFields

データを戻すプロパティ・サービス・エンティティの属性のリストを表します

空のリスト = (属性は戻されません)

* = (すべての属性)

67.3.10 検索式

この項には次のサブセクションが含まれます:

- 第67.3.10.1項「書式」

- 第67.3.10.2項「演算子」

- 第67.3.10.3項「サポートされる属性名」

67.3.10.1 書式

q問合せパラメータの値は、検索式です。検索式の形式は、次のとおりです。

single_expression = attribute_name:operator_name:value
expression = single_expression[;single_expression]

67.3.10.2 サポートされる演算子

- 関係演算子

- :equals: ==> 等しい

- :contains: ==> 含む

- :like: ==> SQLのLike(文字列タイプのプロパティ値にのみ適用されます)

- :gt: ==> より大きい

- :gte: ==> 以上

- :lt: ==> より小さい

- :lte: ==> 以下

- 論理演算子

- ; ==> および

67.3.10.3 サポートされる属性名

表67-4、表67-5、表67-6、およびTable 67-7では、サポートされている属性名を示しています。これらの属性名は、プロパティ・サービス・エンティティを検索するために検索式で使用できます。

ネームスペースの属性

表67-4 ネームスペースの属性

属性名

説明

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

プロパティ定義の属性

表67-5 プロパティ定義の属性

属性名

説明

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

プロパティ・セット定義の属性

表67-6 プロパティ・セット定義の属性

属性名

説明

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

プロパティ・セットの属性

表67-7 プロパティ・セットの属性

属性名

説明

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

67.4 コンダクタREST APIの使用

この項では、コンダクタのREST APIを使用して、次のような基本的なパーソナライズ・タスクをプログラムから実行する方法の例を示します。

- データ・プロバイダに関する情報の取得

- ファンクション・プロバイダに関する情報の取得

- ネームスペースの作成、取得または削除

- シナリオの作成、取得、実行または削除

コンダクタREST APIは、アプリケーション・コード内から使用するか、WebCenter Portal: FrameworkアプリケーションやWebCenter Portal: Spaces内からパーソナライズELを使用してコールできます。

この項には次のサブセクションが含まれます:

- 第67.4.1項「データ・プロバイダ管理APIの使用」

- 第67.4.2項「ファンクション・プロバイダ管理APIの使用」

- 第67.4.3項「ネームスペース管理APIの使用」

- 第67.4.4項「シナリオ管理APIの使用」

67.4.1 データ・プロバイダ管理APIの使用

この項では、コンダクタのデータ・プロバイダ管理APIの使用例を示します。内容は次のとおりです。

- 第67.4.1.1項「データ・プロバイダのコレクションの取得(GET)」

- 第67.4.1.2項「単一のデータ・プロバイダのメタデータの取得(GET)」

- 第67.4.1.3項「データ・プロバイダの接続に関する情報の取得(GET)」

- 第67.4.1.4項「データ・プロバイダと接続で実行可能なリソースに関する情報の取得(GET)」

- 第67.4.1.5項「データ・プロバイダと接続で実行可能なリソースのメソッド情報の取得(GET)」

- 第67.4.1.6項「データ・プロバイダの全情報と詳細予測の取得(GET)」

67.4.1.1 データ・プロバイダのコレクションの取得(GET)

XML

Request:
GET http://localhost:7001/wcps/api/conductor/namespaces/Oracle/dataProviders?projection=summary
accept-language: en
content-type: application/xml
accept: application/xml

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"
} ]
}

67.4.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"
} ]
}

67.4.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"
} ]
}

67.4.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"
} ]
}

67.4.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"
} ]
}

67.4.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"
} ]
}

67.4.2 ファンクション・プロバイダ管理APIの使用

この項では、コンダクタのファンクション・プロバイダAPIの使用例を示します。内容は次のとおりです。

- 第67.4.2.1項「ファンクション・プロバイダのコレクションの取得(GET)」

- 第67.4.2.2項「単一のファンクション・プロバイダのメタデータの取得(GET)」

67.4.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"
} ]
}

67.4.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"
} ]
}

67.4.3 ネームスペース管理APIの使用

この項では、コンダクタのネームスペース管理APIの使用例を示します。内容は次のとおりです。

- 第67.4.3.1項「ネームスペースのコレクションの取得(GET)」

- 第67.4.3.2項「単一のネームスペースの取得(GET)」

- 第67.4.3.3項「ネームスペースの作成(POST)」

- 第67.4.3.4項「ネームスペースの削除(DELETE)」

67.4.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"
} ]
}

67.4.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"
} ]
}

67.4.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"
} ]
}

67.4.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

67.4.4 シナリオ管理APIの使用

この項では、コンダクタのシナリオ管理APIの使用例を示します。内容は次のとおりです。

- 第67.4.4.1項「シナリオのコレクションの取得(GET)」

- 第67.4.4.2項「単一のシナリオの取得(GET)」

- 第67.4.4.3項「シナリオの作成(POST)」

- 第67.4.4.4項「シナリオの更新(PUT)」

- 第67.4.4.5項「シナリオの削除(DELETE)」

- 第67.4.4.6項「シナリオの実行(POST)」

67.4.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"
} ]
}

67.4.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"
} ]
}

67.4.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"
} ]
}

67.4.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"
} ]
}

67.4.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

67.4.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"
}

67.5 ELを使用したパーソナライズ・クライアント・サービスのコール

式言語(EL)式を使用すると、WebページやJava Server Faces環境などのリモート・クライアントからパーソナライズ・サービスをコールできます。たとえば、ELを使用して、パーソナライズ・シナリオをWebCenter Portal: Spaces内のページに適用できます。パーソナライズELの詳細は、第F.9項「パーソナライズ・サービスに関連するEL」を参照してください。

この項には次のサブセクションが含まれます:

- 第67.5.1項「JSFページからのパーソナライズ・クライアント・サービスのコール」

- 第67.5.2項「JSPページからのパーソナライズ・クライアント・サービスのコール」

- 第67.5.3項「パーソナライズ・コンテキスト・オブジェクトのメソッド・リファレンス」

- 第67.5.4項「シングル・サインオンの有効化」

67.5.1 JSFページからのパーソナライズ・クライアント・サービスのコール

パーソナライズ・コンテキストは、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>

67.5.2 JSPページからのパーソナライズ・クライアント・サービスのコール

パーソナライズ・クライアントは

JSPページとともに使用でき、その方法はJava Server Facesページ内で使用する場合と類似しています(第67.5.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>

67.5.3 パーソナライズ・コンテキスト・オブジェクトのメソッド・リファレンス

表67-8に、パーソナライズのコンテキスト・オブジェクトのメソッドを示します。

表67-8 パーソナライズのコンテキスト・オブジェクトのメソッド参照

メソッド名

説明

例

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}

67.5.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内で自動的に構成されます。