Oracle® Fusion Middleware Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発 11gリリース1 (11.1.1.8.3) E49666-03 |
|
前 |
次 |
分析を使用すると、Portal Frameworkアプリケーションの使用状況およびパフォーマンスのメトリックを表示できます。この章では、Frameworkアプリケーションに分析を設定して統合する方法について説明します。
注意: ポータルでは、分析データベース( |
この章の内容は、次のとおりです。
分析タスク・フローの使用の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータルへの分析の追加」を参照してください。データベース表およびパラメータの詳細なリストは、付録G「分析データベース・スキーマ」を参照してください。
分析は、ポータルまたはFrameworkアプリケーションのリアルタイムの使用状況およびアクティビティのレポートを提供します。この項では、分析、分析に関連するタスク・フローおよび分析の使用方法の概要を説明します。
この項には次のサブセクションが含まれます:
分析により、管理者とユーザーは、ポータルおよびFrameworkアプリケーション内のトラフィックおよび使用状況を追跡し、分析できます。分析には次の基本的な機能があります。
使用状況トラッキングのメトリック: 分析では、コミュニティ、ページ、ポートレットおよびドキュメント・ヒットを含む、一般的なポータル機能のメトリックを収集してレポートします。
動作トラッキング: 分析を使用してポータルおよびFrameworkアプリケーションのメトリックを分析し、ページのアクセス時間や使用時間などの使用パターンを判断できます。
ユーザー・プロファイルとの相関: 分析を使用して、メトリック情報とユーザー・プロファイル情報との相関関係を示すことができます。使用状況トラッキング・レポートを表示し、国、会社、役職などのユーザー・プロファイル・データでフィルタ処理できます。
カスタム・レポート: 開発者およびビジネス・ユーザーは、分析データを問い合せるカスタム・レポートを作成できます。詳細は、第47.3.1項「SQLデータ・コントロールの使用」を参照してください。
表47-1は、WebCenter Portalでデフォルトで使用可能な分析タスク・フローを示しています。これらのタスク・フローは、ポータルおよびPortal Frameworkアプリケーションで同様に動作します。これらのタスク・フローとその使用方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータルへの分析の追加」を参照してください。
表47-1 JDeveloperで使用可能な分析タスク・フロー
タスク・フロー | 説明 |
---|---|
WebCenter Portalトラフィック |
ポータル内の共通イベントの概要表示です。 |
ページ・トラフィック |
ポータル内でページにアクセスしたユーザーの人数(重複を除く)とページ・ヒット数を表示します。 |
ログイン・メトリック |
ポータル・ログインをレポートします。 |
ポートレット・トラフィック |
ポートレットの使用状況データを表示します。 |
ポートレット・レスポンス時間 |
ポートレットのパフォーマンス・データを表示します。 |
ポートレット・インスタンス・トラフィック |
ポートレット・インスタンス*の使用状況データを表示します。 |
ポートレット・インスタンス・レスポンス時間 |
ポートレット・インスタンス*のパフォーマンス・データを表示します。 |
検索メトリック |
ポータル検索を追跡します。 |
ドキュメント・メトリック |
ドキュメント・ビューを追跡します。 |
Wikiメトリック |
最も人気のあるWikiや最も人気のないWikiを追跡します。 |
ブログ・メトリック |
最も人気のあるブログや最も人気のないブログを追跡します。 |
ディスカッション・メトリック |
最も人気のあるディスカッションや最も人気のないディスカッションを追跡します。 |
* 複数の異なるページに同じポートレットが表示される場合、配置されている各ポートレットをポートレット・インスタンスと呼びます。
分析サービスでは、分析スキーマ(ACTIVITIES
)が適切なデータベースに設定され実行されている必要があります。また、Oracle WebCenter Portalの分析コレクタがWC_Utilities
管理対象サーバーで起動されて実行中である必要もあります。インストール手順の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalインストレーション・ガイド』を参照してください。
インストール時に、分析コレクタは、インストール・デフォルトを使用してイベントを受信するようにデフォルトで構成されます。デフォルト値がインストールに適していない場合は、WLSTまたはFusion Middleware Controlを使用して別の値を設定する必要が生じることがあります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「分析コレクタの設定」を参照してください。
分析タスク・フローを介して使用状況およびパフォーマンスのメトリックを表示するには、Portal Frameworkアプリケーションのイベント生成を有効にし、分析データベース(ACTIVITIES
)への接続を構成する必要があります。JDeveloperでこれを行う方法の詳細は、第47.2.2項「分析の接続の設定」を参照してください。
実行時には、Portal Frameworkアプリケーションでのユーザー・アクティビティによってイベント・データが生成されます。たとえば、ユーザー・ログイン、ディスカッション・トピックの参照、ドキュメントの表示などが行われるたびに、イベントが記録されます。OpenUsage APIは、ユーザー・データグラム・プロトコル(UDP)を使用してイベント・メトリックを分析コレクタに送信し、イベント・データは分析データベース(ACTIVITIES)に格納されます。
クラスタ環境でない場合、Portal Frameworkアプリケーションはコレクタの場所で構成され、すべてのイベントはその場所に送信されます。
注意: 現在のリリースでは、分析コレクタはクラスタ化できません。 |
Portal Frameworkアプリケーションに含まれる分析タスク・フローおよびカスタム分析レポート(SQLデータ・コントロールに基づく)では、実行時の分析データベースへの問合せによって、標準イベントに関して収集されたメトリックを表示します。実行時のタスク・フローの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の「ポータルへの分析の追加」を参照してください。
この項では、Portal Frameworkアプリケーションに分析を統合する方法について説明します。
この項には次のサブセクションが含まれます:
第47.1.2項「分析サービスの要件」も参照してください。
図47-1と図47-2に示されたフロー・チャートは、Portal Frameworkアプリケーション内で分析を動作させるために必要な前提条件とタスクの概要を提供しています。WebCenter Portalの場合、デフォルトのタスク・フローに対して接続がすでに構成されている以外は、手順は基本的に同じです。後続の各項では、Frameworkアプリケーションに対してのみ適用される構成を指定します。
表47-2 Frameworkアプリケーションに対する分析の構成
アクター | タスク | サブタスク |
---|---|---|
管理者 |
1. WebCenter Portal Frameworkおよび分析用のバックエンド・コンポーネントをインストールします |
|
開発者 |
2. Portal Frameworkアプリケーションに分析サービスを統合します |
2.a JDeveloperでActivitiesデータベースへの接続を構成します 2.b JDeveloperで分析コレクタへの接続を構成します 2.c JDeveloperでページに分析タスク・フローを追加します |
開発者/ 管理者 |
3. 次のいずれかのツールを使用してPortal Frameworkアプリケーションをデプロイします
|
|
管理者 |
4. (オプション)次のいずれかのツールを使用して分析コレクタを構成します
|
|
開発者 |
5. (オプション) JDeveloperを使用してページおよびポートレットのイベントを計測し、アプリケーションを再デプロイします |
|
開発者/ 管理者 |
6. (オプション)次のいずれかのツールを使用して接続パラメータを追加/変更します:
|
|
エンド・ユーザー |
7. Portal Frameworkアプリケーションで分析データを使用できることをテストします |
6.a Portal Frameworkアプリケーションにログインします 6.b 分析タスク・フローを表示します |
分析では、アプリケーションが分析データベース(ACTIVITIES
)に接続している必要があります。イベント情報を特定の分析コレクタに送信するように、Portal Frameworkアプリケーションを構成する必要もあります。
注意: JDeveloperで設計時にバックエンド・サーバーへの接続を設定できますが、デプロイ後の環境でFusion Middleware Controlを使用して、後から接続を追加、削除または変更できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の分析サービスの管理に関する項を参照してください。 |
この項には次のサブセクションが含まれます:
分析では、分析イベント・データが格納される分析データベース(ACTIVITIES
)への接続が必要です。
分析データベースへの接続を設定するには:
ACTIVITIES
データベースが稼働中であることを確認します。
第47.1.2項「分析サービスの要件」を参照してください。
アプリケーション・ナビゲータで、「アプリケーション・リソース」パネルを開きます。
「接続」を右クリックし、「接続の作成」を選択し、「データベース」を選択します。
「データベース接続の作成」ダイアログで、データベース接続について次の情報を入力します。
接続名: connectionName
(例: myAnalyticsDatabaseConnection
)
接続タイプ: Oracle (JDBC)
ユーザー名: username
(データベースにアクセスできるユーザー)
パスワード: password
(指定したユーザーのパスワード)
ホスト名: host
(分析データベースがインストールされている場所。例: localhost
)
JDBCポート: port
(例: 1521
)
SID: sid
(データベースのシステム識別子)
「接続のテスト」をクリックし、成功した場合は、「OK」をクリックします。
「データ・ソースへの関連付け」ダイアログで、「ActivitiesDS」を選択します(図47-2)。
これによってACTIVITIES
スキーマへのデータ・ソースが作成され、設計時にPortal Frameworkアプリケーションで分析をテストできます。
「OK」をクリックします。
「アプリケーション・リソース」ペインで、「接続」の下に接続がノードとして表示されます。
デフォルトでは、分析コレクタはWC_Utilities
管理対象サーバーにインストールされ、次のデフォルト値を使用してイベントを受信するように構成されます。
分析コレクタの構成 | デフォルト値 |
---|---|
コレクタのホスト名 |
|
デフォルト・ポート |
|
最大ポート番号 |
|
ブロードキャスト・タイプ |
|
クラスタリング クラスタ名 クラスタのブロードキャスト頻度 |
- - |
これらのデフォルト値が自分のインストールに適さない場合は、管理者がWLSTまたはFusion Middleware Controlを使用して適切な値を構成できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「分析コレクタ設定の構成」を参照してください。
(Frameworkアプリケーションのみ)分析では、WebCenter Portalイベントを収集する分析コレクタへの接続が必要であり、Portal Frameworkアプリケーション内でOpenUsageが有効になっている必要があります。
分析サービスのプロパティを設定するには、次のOpenUsage JVMプロパティを使用します。
oracle.wc.openusage.
enabled
- 発生した分析イベントをOpenUsage APIを使用して分析コレクタに送信するかどうかを指定します。有効な値はtrue
およびfalse
です。デフォルト値はfalse
です。
oracle.wc.openusage.
unicast
- クラスタ化された分析コレクタにマルチキャスト・モードでイベントを送信するかどうか、またはユニキャスト通信を使用した単一の分析コレクタが必要かどうかを指定します。有効な値はtrue
およびfalse
です。デフォルト値は、true
(ユニキャスト)です。現在、クラスタはサポートされていないため、ここではtrue
のみを指定します。
oracle.wc.openusage.
clustername
- コレクタ・クラスタの名前または分析コレクタのホスト名。現時点ではクラスタはサポートされていないため、ここにはホスト名のみを指定します。デフォルト値はlocalhost
です。
oracle.wc.openusage.
collectorport
- 分析コレクタがイベントをリスニングするポート。デフォルト値は31314
です。
oracle.wc.openusage.
timeout
: コレクタ・サービスをマルチキャスト・モードで使用できる時間(秒単位)。デフォルト値は30秒です。
分析コレクタのJVMプロパティを設定するには:
ヒント: 管理対象サーバーでFrameworkアプリケーションを実行する場合は、これらのJVMプロパティを |
JDeveloperで、メイン・メニューから「実行」、「アクティブな実行構成」、「実行構成の管理」の順に選択します。
「プロジェクト・プロパティ」ダイアログ・ボックスで、「デフォルト」の実行構成を選択し、「編集」をクリックします。
「起動設定」セクションで、次の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
注意: 現在のリリースでは、 |
ここでは太字で示されている、指定する値が、自分の分析コレクタ・インストールに適合することを確認します。
「OK」をクリックしてデフォルトの実行構成を保存し、再び「OK」をクリックします。
これらの手順によって、現在のPortal Frameworkアプリケーション用の統合WebLogic ServerでOpenUsageが使用できます。統合WebLogic Serverが稼働中の場合は、再起動して新しい設定を反映する必要があります。詳細は、第7.2項「統合WebLogic ServerへのPortal Frameworkアプリケーションのデプロイ」も参照してください。
大部分のイベントはデフォルトで構成されているため、イベントを送信するためにアプリケーション内で追加のコーディングを行う必要はありません。唯一の例外はページ・ビュー・イベントで、このイベントについては、第47.2.3.1項「ページ・ビュー用のイベント・コードの追加」に記載されている追加のコードが必要です。
ページ・イベントを送信するには、各ページにイベント・コードを追加する必要があります。次は、ページ上でクライアントJavaScriptイベントを使用して、実際のイベントを送信するためのJava分析APIをコールしている例です。この例を実装するには、<af:document>
タグのすぐ下に次のコードを追加し、イベントを送信するページの名前でpageName
値を置き換えます。
<af:resource type="javascript">
function initPageLoadEvent(event) {
AdfCustomEvent.queue(event.getSource(),
"generatePageEvent",
{pageName:"Page and Login Statistics"},
true);
event.cancel();
}
</af:resource>
<af:clientListener method="initPageLoadEvent" type="load"/>
<af:serverListener type="generatePageEvent"
method="#{AnalyticsInstrumentation.sendPageEvent}"/>
前述の例は、ADFドキュメントがロードされるときにクライアント・イベントを生成し、定義されたサーバー・リスナーが実際にイベントを送信します。イベントを送信するJava Beanは次のとおりです。
public void sendPageEvent (ClientEvent event) { // Checks whether Analytics events must be sent if (!AnalyticsUtil.isSendingEvents()) return; HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); String requestUser = request.getRemoteUser(); //SEND PAGE VIEW EVENT String pageName = (String)event.getParameters().get("pageName"); if(pageName == null || pageName.isEmpty() || requestUser == null) return; AnalyticsUtil.sendPageViewEvent(FacesContext.getCurrentInstance().getViewRoot().getViewId(), "PortalApp", //spaceDisplayName requestUser, //username 0, pageName, false, request); }
(Frameworkアプリケーションのみ)分析タスク・フローではMDSを使用して、ユーザーが作成したカスタマイズを格納し、これらのカスタマイズは分析固有のMDSネームスペースに格納されます。Portal Frameworkアプリケーションで分析タスク・フローに対するユーザー・カスタマイズを有効にするには、分析メタデータのネームスペースをadf-config.xml
で構成する必要があります。
注意: さらに、各タスク・フローでは、ユーザー・カスタマイズの詳細が格納される一意のMDSドキュメントを指定する必要があります。第47.2.5.4項「分析タスク・フローの実行時のカスタマイズをエンド・ユーザーに許可する方法」を参照してください。 |
分析メタデータのネームスペースを構成するには:
adf-config.xml
を開きます。
「アプリケーション・リソース」パネルを使用して、このファイルに移動します。ファイルはDescriptors
\ADF META-INF
フォルダにあります。
<metadata-namespaces>
要素の下に、次のXMLフラグメントを追加します。
<namespace path="/oracle/webcenter/analytics/scopedMD" metadata-store-usage="WebCenterFileMetadataStore"/>
ファイルを保存します。
第21章「コンポーザ固有のMDS構成の実行」も参照してください。
この項では、分析タスク・フローについて説明し、分析タスク・フローをアプリケーションに追加する方法について説明します。次のサブセクションが含まれます:
表47-3は、JDeveloperで使用可能な分析タスク・フローを示しています。これらのタスク・フローと、実行時にユーザーに表示される情報の種類の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のWebCenter Portalの分析タスク・フローの理解に関する項を参照してください。
表47-3 JDeveloperで使用可能な分析タスク・フロー
分析タスク・フロー | 説明 |
---|---|
WebCenter Portalトラフィック |
ポータル内の共通イベントの概要表示です。 |
ページ・トラフィック |
ポータル内でページにアクセスしたユーザーの人数(重複を除く)とページ・ヒット数を表示します。 |
ログイン・メトリック |
ポータル・ログインをレポートします。 |
ポートレット・トラフィック |
ポートレットの使用状況データを表示します。 |
ポートレット・レスポンス時間 |
ポートレットのパフォーマンス・データを表示します。 |
ポートレット・インスタンス・トラフィック |
ポートレット・インスタンス*の使用状況データを表示します。 |
ポートレット・インスタンス・レスポンス時間 |
ポートレット・インスタンス*のパフォーマンス・データを表示します。 |
検索メトリック |
ポータル検索を追跡します。 |
ドキュメント・メトリック |
ドキュメント・ビューを追跡します。 |
Wikiメトリック |
最も人気のあるWikiや最も人気のないWikiを追跡します。 |
ブログ・メトリック |
最も人気のあるブログや最も人気のないブログを追跡します。 |
ディスカッション・メトリック |
最も人気のあるディスカッションや最も人気のないディスカッションを追跡します。 |
* 複数の異なるページに同じポートレットが表示される場合、配置されている各ポートレットをポートレット・インスタンスと呼びます。
分析タスク・フローをアプリケーションに追加するには:
第47.1.2項「分析サービスの要件」の説明に従って、アプリケーションを準備します。
ポートレット、ディスカッション、ドキュメント、検索など、分析イベント・データを使用できるサービスがアプリケーションに含まれていることを確認します。
注意: アプリケーションを実行したときに使用状況データがない場合は、分析タスク・フローから |
タスク・フローを追加するJSFページ(.jspx)を開きます。
「リソース・パレット」で、「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」フォルダを開きます(図47-3)。
「分析」タスク・フローを、ページの<af:form>
タグの内側にドラッグ・アンド・ドロップします。
「作成」ポップアップ・メニューから、「リージョン」を選択します。
分析サービスのADFライブラリ(analytics-reporting-service-view.jar
)をプロジェクトに追加するよう要求される場合があります。「ライブラリの追加」をクリックして確認します(図47-4)。
「タスク・フロー・バインディングの編集」ダイアログで、分析タスク・フロー・パラメータの値を入力します。
applicationName
- 必須
analyticsResourceId
- 必須
analyticsReportTitle
- オプション
maxDataPointsPerSeries
- オプション
詳細は、第47.2.5.5項「分析タスク・フローおよびタスク・フロー・パラメータ」を参照してください。
「OK」をクリックします。
タスク・フローがページに追加され、タスク・フローを実行するようにViewControllerプロジェクトのライブラリが構成されます。
プロジェクトを保存し、ページを実行して、Portal Frameworkアプリケーション内でタスク・フローが動作することを確認します。
アプリケーションを実行したときに使用状況データがない場合は、分析タスク・フローから「表示するデータがありません」
というメッセージが表示されます。
テスト中のタスク・フローに関連するアクションを実行することで、表示する分析タスク・フローのデータを作成できます。たとえば、ディスカッション・メトリックをテストするには、ディスカッションを作成および表示したり、ページ・メトリックをテストするには、ページを作成および表示したりするといった具合です。
各分析タスク・フローには、一連の必須およびオプションのタスク・フロー・バインディング・パラメータがあります。必須パラメータは強制的なものではありませんが、これを使用すると、タスク・フローが正しく動作するために必要な情報を取得できます。たとえば、特定のタスク・フロー・インスタンスに対するユーザー・カスタマイズをMDSに格納する場合は、必要なMDSドキュメントを指定する必要があります。
また、タスク・フロー・バインディング・パラメータを使用すると、タスク・フロー・インスタンスの外観と動作もカスタマイズできます。たとえば、パラメータ値を使用して、分析データの上に表示されるタイトルを指定できます。
タスク・フロー・バインディング・パラメータの値は、タスク・フローをアプリケーション・ページにドラッグ・アンド・ドロップするときに指定できます。この操作を行うと、「タスク・フロー・バインディング」ダイアログが開きます(詳細は、第47.2.5.2項「分析タスク・フローをページに追加する方法」を参照してください)。
ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を実行時に調整することもできます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築の分析タスク・フロー・プロパティの設定に関する項を参照してください。
「タスク・フロー・バインディングの編集」ダイアログにアクセスするには:
ページの下部にある「バインディング」タブ(「ソース」タブの横)をクリックして、「バインディング」ビューに移動します。
「実行可能ファイル」には、ページに追加したタスク・フローのリストが表示されます。分析タスク・フローを選択します(図47-5)。
「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」アイコン(鉛筆)をクリックします。
「タスク・フロー・バインディングの編集」ダイアログ(図47-6)で、必要に応じてバインディング・パラメータ値を指定します
詳細は、第47.2.5.5項「分析タスク・フローおよびタスク・フロー・パラメータ」を参照してください。
終了したら、ページを保存し実行して、結果を確認します。
特定のタスク・フロー・インスタンスへのユーザー・カスタマイズを可能にするには、カスタマイズが格納されるMDSドキュメントを、Analytics Resource Id
パラメータを使用して指定する必要があります。
IDは一意である必要があるため、<app_name>_<page_name>_<task_flow>_<sequence>
のような、一貫性のある命名パターンの使用を検討します。たとえば、ページ・トラフィック・タスク・フローの場合は、analyticsResourceId
パラメータをmyapp_analyticspage_pagetraffic_1
に設定します。
詳細は、第47.2.5.3項「分析タスク・フローのパラメータを変更する方法」を参照してください。
表47-4は、分析サービスに適用可能なタスク・フロー・バインディング・パラメータをリストし説明しています。
表47-4 分析タスク・フローのバインディング・パラメータ
パラメータ(*は必須) | タスク・フロー | 説明 |
---|---|---|
|
すべて |
分析データの上に表示されるタイトルを指定します。つまり、デフォルトのレポート・タイトルをオーバーライドできます。図47-7「analyticsReportTitle - 例」も参照してください。 |
|
すべて |
タスク・フロー・インスタンスに対するユーザー・カスタマイズ/アプリケーション・カスタマイズをMDSに格納するために生成されるMDSドキュメントを指定します。たとえば、 |
|
すべて |
分析データを表示する対象のPortal Frameworkアプリケーションの名前を指定します。たとえば、 ポータルの場合、アプリケーションの名前は常に 分析データベースを使用して複数のアプリケーションのイベント・データを格納できるため、このパラメータは、表示するアプリケーション・データの特定に必要です。 省略した場合、タスク・フローではすべてのアプリケーションの分析データが表示されます。 |
|
すべて |
棒グラフまたは折れ線グラフに表示されるデータ・ポイントの最大数を指定します。1から1000の範囲の値を入力します。 デフォルト値は25です。 データ・ポイントの数が多いほど、グラフの表示に時間がかかる場合があります。図47-8「maxDataPointsPerSeries - 例」も参照してください。 |
分析タスク・フローの目的は、キャパシティ・プランニング、サービス品質(QoS)分析、投資収益率(ROI)分析、検索の最良のカスタマイズなど、特定のビジネス機能を実行する限られた一連の管理ユーザーに対して、使用状況メトリックを表示することです。
分析用の使用状況データはポータル分析にとって重要ですが、ポータル・ユーザーにとって個人的または機密的な場合があります。たとえば、検索、ドキュメントおよびポートレットの各レポートは、電子メール・アドレス、名、姓などのユーザー・プロパティに基づく、特定のユーザーのアクティビティ・メトリックを表示するように構成できます。
分析タスク・フローおよびカスタム・レポートに関連するセキュリティとプライバシの問題を保護する方法は、次のとおりです。
分析タスク・フロー、カスタム・レポートおよび機密的な使用状況データを表示するページへの管理者アクセスを管理します。
分析タスク・フローのページへの追加、カスタム分析データ・コントロールに基づくレポートの作成、または機密的な使用状況メトリックを表示するように設定されているページの参照を行える管理ユーザーの数を限定するには、新しい管理グループを作成し、それに応じてグループ・メンバーシップを管理します。
分析タスク・フローへのユーザー・アクセスを管理します。
特に必要でないかぎり、分析タスク・フローおよびカスタム・レポートには、プライベート・データや機密データを含めないようにします。レポート内のメトリックにプライベート・データや機密データが含まれる場合、該当の指定ユーザーのみがタスク・フローまたはページにアクセスできるようにセキュリティを構成します。
たとえば、設計時に開発者は、管理者でないユーザーにページへの適切な権限を与えることによって、分析タスク・フローを公開できます。また、開発者は、デプロイ前にレポートをカスタマイズして、特定のレポート・オプション(時間枠、グラフのタイプ、ユーザー・プロパティ・フィルタ、グループ化基準オプションなど)を非表示/表示および事前定義できます。管理者は実行時に同じ操作、つまり、ページ・アクセスの付与および表示される情報のカスタマイズを行えます。管理者でないユーザーも、表示が許可されているレポートをパーソナライズできますが、管理者が行ったカスタマイズを変更できません。
認証されていないユーザーが分析タスク・フローをページに追加したり、機密データを表示できないようにします。
デフォルトの分析タスク・フローでは、一般的な分析イベント・メトリックを固有の表示形式で表示します。分析データを異なる方法で表示したり、カスタムのイベント・データを表示する場合は、SQLを使用してカスタム分析レポートを作成できます。
この項には次のサブセクションが含まれます:
データベース表およびパラメータの詳細なリストは、付録G「分析データベース・スキーマ」を参照してください。
分析データベースから取得する情報をSQL問合せ文で定義するには、SQLデータ・コントロールを使用します。データ・コントロールをページに公開する場合、分析データをグラフ、表またはフォームで表示するかどうかを選択でき、バインド・パラメータなどの表示オプションも構成できます。
設計時にJDeveloperを使用してSQLデータ・コントロールを作成できます。データ・コントロールの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。
実行時のリソース管理機能が有効な場合は、実行中のPortal Frameworkアプリケーションでもデータ・コントロールを作成できます。WebCenter Portalでこの操作を行うには、Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のSQLデータ・コントロールの作成に関する項を参照してください。他のPortal Frameworkアプリケーションでデータ・コントロールを作成するには、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「Portal Frameworkアプリケーションのアセットの管理」を参照してください。
Portal Frameworkアプリケーションで分析データベースからデータをフェッチし、分析データを表示するには、SQLデータ・コントロールを使用します。図47-9は、WebCenter PortalにおけるSQLデータ・コントロールの作成/編集ダイアログ内のサンプルSQL文を示しています。分析データベース(ActivitiesDS
)へのデータベース接続が必要であり、有効なデータベース・パスワードを指定する必要があります。
サンプルSQL: 日単位のページ・ヒット
SELECT space.name_, page.name_, space.id, page.id, count(1), fact.page_, page.resourceid_ FROM asfact_wc_pagevie_0 fact, asdim_wc_groupsp_0 space, asdim_wc_pages_0 page, asdim_wc_applica_0 app WHERE space.id = fact.groupspace_ and page.id = fact.page_ and app.id = fact.application_ and fact.occurred between to_date(:startdate, :dateformat) and to_date(:enddate, :dateformat) and app.name_ = :appname and page.personal_ = :ispersonal and space.name_ is not null and page.name_ is not null and space.id is not null and page.id is not null and fact.page_ is not null and page.resourceid_ is not null GROUP BY space.name_, page.name_, space.id, page.id, fact.page_, page.resourceid_ ORDER BY count(1) desc
バインド・パラメータは必要に応じて追加できます。パラメータを追加する場合、指定するパラメータ値に基づいて、データ・ソースから取得されるデータを制限できます。この例はWebCenter Portalアプリケーション用であるため、図47-10に示すように、アプリケーションの名前はwebcenter
に設定し、個人用ページ(ホーム・ポータル内のページ)をレポートに含めます。
表47-5 レポート・パラメータ
パラメータ | デフォルト値 | 説明 |
---|---|---|
|
|
対応するアプリケーション名。ポータルの場合は常に |
|
|
ポータルの場合、ホーム・ポータルに作成されたページをレポートに含めるかどうかを決定します。 |
|
|
Oracleデータベース内の有効な日付パターン。取得するデータによって異なるため、パターンのすべてのコンポーネントがオプションです。 |
|
|
必要なデータの開始日を決定します。 |
|
|
必要なデータの終了日を決定します。 |
図47-9は、グラフとして表示されるカスタム・レポートを示しています。
この項では、カスタム・レポートの出発点として使用できるSQL文について説明します。これらの文は、フィルタの追加やグループ化など、様々な方法でカスタマイズできます。
データベース表およびパラメータの詳細なリストは、付録G「分析データベース・スキーマ」を参照してください。
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
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
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
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
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_
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_
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_
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_
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_
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
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
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_
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_
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_
この項では、ユーザー固有のメトリックについての問合せのサンプルを示します。次のサンプルがあります。
データベース表とパラメータの詳細なリストおよびユーザー・プロパティの詳細は、付録G「分析データベース・スキーマ」の第G.5項「分析ユーザー・プロパティ」を参照してください。
次の問合せは、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_
次の問合せは、ページ・ビューの総数を部門別に返します。
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
この項では、特定のメトリックについての問合せのサンプルを示します。次のサンプルがあります。
データベース表およびパラメータの詳細なリストは、付録G「分析データベース・スキーマ」を参照してください。
次の問合せは、特定の期間に特定のユーザーによって実行されたすべてのアクティビティのリストを返します。
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 ...
次の問合せは、特定のポータルで実行されたすべてのアクティビティのリストを返します。
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
次の問合せは、特定の期間に特定のポータルにおいて実行されたすべてのアクティビティのリストを返します。
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
次の問合せは、特定の期間における特定のサービス(この例の場合はログイン・サービス)のアクティビティを返し、結果をユーザー単位にグループ化します。
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
次の問合せは、特定の期間に検索されたフレーズを返し、各検索の実行回数をリストします。
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
次の問合せは、特定の期間に特定のユーザーによって表示されたページを返します。
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