Oracle® Fusion Middleware Oracle WebCenter Portal開発者ガイド 11g リリース1 (11.1.1.6.0) B72084-01 |
|
![]() 前 |
![]() 次 |
分析サービスを使用すると、Frameworkアプリケーションの使用状況およびパフォーマンスのメトリックを表示できます。この章では、Oracle WebCenter Portal: Frameworkを使用して作成したアプリケーションに分析サービスを統合する方法について説明します。
この章の内容は、次のとおりです。
分析タスク・フローの使用の詳細は、Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイドの「分析サービスの使用」を参照してください。
データベースの表とパラメータの詳細なリストは、付録I「WebCenter Portalの分析データベース・スキーマ」を参照してください。
分析サービスは、ポータルのリアルタイムの使用状況およびアクティビティのレポートを提供します。この項では、分析サービス、タスク・フローおよび使用方法の概要を説明します。この項の内容は、次のとおりです。
分析サービスにより、管理者とユーザーは、WebCenter Portalアプリケーション内のトラフィックおよび使用状況を追跡し、分析できます。分析サービスの基本的な機能は次のとおりです。
使用状況トラッキングのメトリック: 分析サービスでは、コミュニティ、ページ、ポートレットおよびドキュメント・ヒットを含む、一般的なポータル機能のメトリックを収集してレポートします。
動作トラッキング: 分析サービスを使用してWebCenter Portalメトリックを分析して、ページのアクセス時間や使用時間などの使用パターンを判断できます。
ユーザー・プロファイルとの相関: 分析サービスを使用して、メトリック情報とユーザー・プロファイル情報との相関関係を示すことができます。使用状況トラッキング・レポートを表示し、国、会社、役職などのユーザー・プロファイル・データでフィルタ処理できます。
カスタム・レポート: 開発者およびビジネス・ユーザーは、分析データを問い合せるカスタム・レポートを作成できます。詳細は、第47.3.1項「SQLデータ・コントロールの使用」を参照してください。
表47-1は、WebCenter Portalで使用可能な分析タスク・フローを示しています。これらのタスク・フローは、SpacesアプリケーションおよびFrameworkアプリケーションで同様に動作します。これらのタスク・フローとその使用方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイドのSpacesの分析タスク・フローの概要に関する項を参照してください。
表47-1 JDeveloperで使用可能な分析タスク・フロー
Task Flows | 説明 |
---|---|
ポータル内の共通イベントの概要表示です。 |
|
ポータル内でページにアクセスしたユーザーの人数(重複を除く)とページ・ヒット数を表示します。 |
|
ポータル・ログインをレポートします。 |
|
ポートレットの使用状況データを表示します。 |
|
ポートレットのパフォーマンス・データを表示します。 |
|
ポートレット・インスタンス*の使用状況データを表示します。 |
|
ポートレット・インスタンス*のパフォーマンス・データを表示します。 |
|
ポータル検索を追跡します。 |
|
ドキュメント・ビューを追跡します。 |
|
最も人気のあるWikiや最も人気のないWikiを追跡します。 |
|
最も人気のあるブログや最も人気のないブログを追跡します。 |
|
最も人気のあるディスカッションや最も人気のないディスカッションを追跡します。 |
* 複数の異なるページに同じポートレットが表示される場合、配置されている各ポートレットをポートレット・インスタンスと呼びます。
分析サービスは、分析スキーマ(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でこれを行う方法の詳細は、第47.2.2項「分析サービスの接続の設定」を参照してください。
実行時には、Frameworkアプリケーションでのユーザー・アクティビティによってイベント・データが生成されます。たとえば、ユーザー・ログイン、ディスカッション・トピックの参照、ドキュメントの表示などが行われるたびに、イベントが記録されます。OpenUsage APIは、ユーザー・データグラム・プロトコル(UDP)を使用してイベント・メトリックを分析コレクタに送信し、イベント・データは分析データベース(ACTIVITIES)に格納されます。
クラスタ環境でない場合、Frameworkアプリケーションはコレクタの場所で構成され、すべてのイベントはその場所に送信されます。
クラスタ環境の場合は、Frameworkアプリケーションも分析コレクタもクラスタ固有のチャネル名で構成されます。各コレクタは、ハートビートとその位置をクラスタ固有のチャネルに定期的にブロードキャストします。Frameworkアプリケーションはこのようなコレクタのハートビートをチャネルでリスニングし、検出すると、そのコレクタを既知のコレクタのリストに追加します。Frameworkアプリケーションでは、イベントをランダムに送信する場合、このリストからコレクタを選択し、そのコレクタに対してイベントを送信します。コレクタが停止すると(意図的に停止した場合または障害の場合)、ハートビートのブロードキャストが停止されます。Frameworkアプリケーションでは、ハートビートの検出が停止すると、リストからコレクタを削除し、そのコレクタへのイベントの送信を停止します。Frameworkアプリケーションでコレクタのハートビートが検出されない場合、イベントが送信されません。
Frameworkアプリケーションに含まれる分析タスク・フローおよびカスタム分析レポート(SQLデータ・コントロールに基づく)では、実行時の分析データベースへの問合せによって、標準イベントに関して収集されたメトリックを表示します。実行時のタスク・フローの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイドの分析タスク・フローの使用に関する項を参照してください。
この項では、Frameworkアプリケーションに分析サービスを統合する方法について説明します。
この項の内容は、次のとおりです。
第47.1.2項「分析サービスの要件」も参照してください。
この項の図47-1のフロー・チャートと表47-2は、Frameworkアプリケーションで分析サービスが動作するために必要な条件とタスクの概要を示しています。
表47-2 Frameworkアプリケーションに対する分析サービスの構成
アクター | タスク | サブタスク |
---|---|---|
管理者 |
1. WebCenter Portal: Frameworkおよび分析サービス用のバックエンド・コンポーネントをインストールします |
|
開発者 |
2. Frameworkアプリケーションに分析サービスを統合します |
2.a JDeveloperでActivitiesデータベースへの接続を構成します 2.b JDeveloperで分析コレクタへの接続を構成します 2.c JDeveloperでページに分析タスク・フローを追加します |
開発者/ 管理者 |
3. 次のいずれかのツールを使用してFrameworkアプリケーションをデプロイします
|
|
管理者 |
4. (オプション)次のいずれかのツールを使用して分析コレクタを構成します
|
|
開発者 |
5. (オプション) JDeveloperを使用してページおよびポートレットのイベントを計測し、アプリケーションを再デプロイします |
|
開発者/ 管理者 |
6. (オプション)次のいずれかのツールを使用して接続パラメータを追加/変更します
|
|
エンド・ユーザー |
7. Frameworkアプリケーションで分析データを使用できることをテストします |
6.a Frameworkアプリケーションにログインします 6.b 分析タスク・フローを表示します |
分析サービスでは、Frameworkアプリケーションが分析データベース(ACTIVITIES
)に接続している必要があります。イベント情報を特定の分析コレクタに送信するように、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
スキーマへのデータソースが作成され、設計時にFrameworkアプリケーションで分析をテストできます。
「OK」をクリックします。
「アプリケーション・リソース」ペインで、「接続」の下に接続がノードとして表示されます。
デフォルトでは、分析コレクタはWC_Utilities
管理対象サーバーにインストールされ、次のデフォルト値を使用してイベントを受信するように構成されます。
分析コレクタの構成 | デフォルト値 |
---|---|
コレクタのホスト名 |
|
デフォルト・ポート |
|
「最大ポート番号」 |
|
ブロードキャスト・タイプ |
|
クラスタリング クラスタ名 クラスタのブロードキャスト頻度 |
- - |
これらのデフォルト値が自分のインストールに適さない場合は、管理者がWLSTまたはFusion Middleware Controlを使用して適切な値を構成できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の分析コレクタ設定の構成に関する項を参照してください。
分析サービスでは、WebCenter Portalイベントを収集する分析コレクタへの接続が必要であり、Frameworkアプリケーション内でOpenUsageが有効になっている必要があります。
分析サービスのプロパティを設定するには、次のOpenUsage JVMプロパティを使用します。
oracle.wc.openusage.
enabled
: 発生した分析イベントをOpenUsage APIを使用して分析コレクタに送信するかどうかを指定します。有効な値はtrue
およびfalse
です。デフォルト値はfalse
です。
oracle.wc.openusage.
unicast
: クラスタ化された分析コレクタにマルチキャスト・モードでイベントを送信するかどうか、またはユニキャスト通信を使用した単一の分析コレクタが必要かどうかを指定します。有効な値はtrue
およびfalse
です。デフォルト値は、true
(ユニキャスト)です。
oracle.wc.openusage.
clustername
: コレクタ・クラスタの名前または分析コレクタのホスト名。現時点ではクラスタはサポートされていないため、ここにはホスト名のみを指定します。デフォルト値はlocalhost
です。
oracle.wc.openusage.
collectorport
: 分析コレクタがイベントをリスニングするポート。デフォルト値は31314
です。
oracle.wc.openusage.
timeout
: コレクタ・サービスをマルチキャスト・モードで使用できる時間(秒単位)。デフォルト値は30秒です。
分析コレクタの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」をクリックします。
これらの手順によって、現在のFrameworkアプリケーション用の統合WebLogicサーバーでOpenUsageが使用できます。統合WebLogicサーバーが稼働中の場合は、再起動して新しい設定を反映する必要があります。詳細は、第70.2項「統合WebLogicサーバーへのFrameworkアプリケーションのデプロイ」を参照してください。
大部分のイベントはデフォルトで構成されているため、イベントを送信するためにアプリケーション内で追加のコーディングを行う必要はありません。唯一の例外はページ・ビュー・イベントで、このイベントについては、第47.2.3.1項「ページ・ビュー用のイベント・コードの追加」に記載されている追加のコードが必要です。
ページ・イベントを送信するには、各ページにイベント・コードを追加する必要があります。次の例では、ページ上でクライアントJavaScriptイベントを使用しており、これが次にJava Analytics 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 = 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(), //viewID "PortalApp", //spaceDisplayName requestUser, //username 0, pageName, false, request);
分析タスク・フローではMDSを使用して、ユーザーが作成したカスタマイズを格納し、これらのカスタマイズは分析固有のMDSネームスペースに格納されます。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"/>
ファイルを保存します。
第23章「コンポーザ固有のMDS構成の実行」も参照してください。
この項では、分析サービス・タスク・フローについて説明し、分析タスク・フローをアプリケーションに追加する方法について説明します。この項の内容は、次のとおりです。
表47-3は、WebCenter Portalで使用可能な分析タスク・フローを示しています。これらのタスク・フローと、実行時にユーザーに表示される情報の種類の詳細は、Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイドのSpacesの分析タスク・フローの概要に関する項を参照してください。
表47-3 JDeveloperで使用可能な分析タスク・フロー
分析タスク・フロー | 説明 |
---|---|
「WebCenter Portalトラフィック」 |
ポータル内の共通イベントの概要表示です。 |
ページ・トラフィック |
ポータル内でページにアクセスしたユーザーの人数(重複を除く)とページ・ヒット数を表示します。 |
ログイン・メトリック |
ポータル・ログインをレポートします。 |
ポートレット・トラフィック |
ポートレットの使用状況データを表示します。 |
ポートレット・レスポンス時間 |
ポートレットのパフォーマンス・データを表示します。 |
ポートレット・インスタンス・トラフィック |
ポートレット・インスタンス*の使用状況データを表示します。 |
ポートレット・インスタンス・レスポンス時間 |
ポートレット・インスタンス*のパフォーマンス・データを表示します。 |
検索メトリック |
ポータル検索を追跡します。 |
ドキュメント・メトリック |
ドキュメント・ビューを追跡します。 |
Wikiメトリック |
最も人気のあるWikiや最も人気のないWikiを追跡します。 |
ブログ・メトリック |
最も人気のあるブログや最も人気のないブログを追跡します。 |
「ディスカッション・メトリック」 |
最も人気のあるディスカッションや最も人気のないディスカッションを追跡します。 |
分析タスク・フローをFrameworkアプリケーションに追加する手順は、次のとおりです。
第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プロジェクトのライブラリが構成されます。
プロジェクトを保存し、ページを実行して、Frameworkアプリケーション内でタスク・フローが動作することを確認します。
アプリケーションを実行したときに使用状況データがない場合は、分析タスク・フローから「表示するデータがありません」
というメッセージが表示されます。
テストしているタスク・フローに関係する動作を実行することによって、表示する分析タスク・フローのデータを作成できます。たとえば、ディスカッション・メトリックをテストするには、ディスカッションを作成して表示します。ページ・メトリックをテストするには、ページを作成して表示します。他の場合についても同様です。
各分析タスク・フローには、一連の必須およびオプションのタスク・フロー・バインディング・パラメータがあります。必須パラメータは強制的なものではありませんが、これを使用すると、タスク・フローが正しく動作するために必要な情報を取得できます。たとえば、特定のタスク・フロー・インスタンスに対するユーザー・カスタマイズをMDSに格納する場合は、必要なMDSドキュメントを指定する必要があります。
また、タスク・フロー・バインディング・パラメータを使用すると、タスク・フロー・インスタンスの外観と動作もカスタマイズできます。たとえば、パラメータ値を使用して、分析データの上に表示されるタイトルを指定できます。
タスク・フローをアプリケーション・ページにドラッグ・アンド・ドロップすると、タスク・フロー・バインディング・パラメータの値を渡すことができます。この操作を行うと、「タスク・フロー・バインディング」ダイアログが開きます(詳細は、第47.2.5.2項「分析タスク・フローをページに追加する方法」を参照してください)。
ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を実行時に調整することもできます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイドの分析タスク・フロー・プロパティの設定に関する項を参照してください。
「タスク・フロー・バインディングの編集」ダイアログにアクセスする手順は次のとおりです。
ページの下部にある「バインディング」タブ(「ソース」タブの横)をクリックし、「バインディング」ビューに移動します。
「実行可能ファイル」には、ページに追加したタスク・フローのリストが表示されます。分析タスク・フローを選択します(図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 分析タスク・フローのバインディング・パラメータ
パラメータ(*は必須) | Task Flows | 説明 |
---|---|---|
分析データの上に表示される表示タイトルを指定します。これにより、デフォルトのレポート・タイトルを上書きできます。図47-7「analyticsReportTitle - 例」も参照してください。 |
||
タスク・フロー・インスタンスに対するユーザー・カスタマイズ/アプリケーション・カスタマイズをMDSに格納するために生成されるMDSドキュメントを指定します。たとえば、 |
||
分析データを表示する対象のFrameworkアプリケーションの名前を指定します。たとえば、 分析データベースを使用して複数のアプリケーションのイベント・データを格納できるため、このパラメータは、表示するアプリケーション・データの特定に必要です。 省略した場合、タスク・フローではすべてのアプリケーションの分析データが表示されます。 |
||
棒グラフまたは折れ線グラフに表示されるデータ・ポイントの最大数を指定します。1から1000の範囲の値を入力します。 デフォルト値は25です。 データ・ポイントの数が多いほど、グラフの表示に時間がかかる場合があります。図47-8「maxDataPointsPerSeries - 例」も参照してください。 |
分析タスク・フローの目的は、容量計画、サービス品質(QoS)分析、投資収益率(ROI)分析、検索の最良のカスタマイズなど、特定のビジネス機能を実行する限られた一連の管理ユーザーに対して、使用状況メトリックを表示することです。
分析用の使用状況データはポータル分析にとって重要ですが、ポータル・ユーザーにとって個人的または機密的な場合があります。たとえば、検索、ドキュメントおよびポートレットの各レポートは、電子メール・アドレス、名、姓などのユーザー・プロパティに基づく、特定のユーザーのアクティビティ・メトリックを表示するように構成できます。
分析タスク・フローおよびカスタム・レポートに関連するセキュリティとプライバシの問題を保護する方法は、次のとおりです。
分析タスク・フロー、カスタム・レポートおよび機密的な使用状況データを表示するページへの管理者アクセスを管理します。
分析タスク・フローのページへの追加、カスタム分析データ・コントロールに基づくレポートの作成、または機密的な使用状況メトリックを表示するように設定されているページの参照を行える管理ユーザーの数を限定するには、新しい管理グループを作成し、それに応じてグループ・メンバーシップを管理します。
分析タスク・フローへのユーザー・アクセスを管理します。
特に必要でないかぎり、分析タスク・フローおよびカスタム・レポートには、プライベート・データや機密データを含めないようにします。レポート内のメトリックにプライベート・データや機密データが含まれる場合、該当の指定ユーザーのみがタスク・フローまたはページにアクセスできるようにセキュリティを構成します。
たとえば、設計時に開発者は、管理者でないユーザーにページへの適切な権限を与えることによって、分析タスク・フローを公開できます。また、開発者は、デプロイ前にレポートをカスタマイズして、特定のレポート・オプション(時間枠、グラフのタイプ、ユーザー・プロパティ・フィルタ、グループ化基準オプションなど)を非表示/表示および事前定義できます。管理者は実行時に同じ操作、つまり、ページ・アクセスの付与および表示される情報のカスタマイズを行えます。管理者でないユーザーも、表示が許可されているレポートをパーソナライズできますが、管理者が行ったカスタマイズを変更できません。
認証されていないユーザーが分析タスク・フローをページに追加したり、機密データを表示できないようにします。
デフォルトの分析タスク・フローでは、一般的な分析イベント・メトリックを固有の表示形式で表示します。分析データを異なる方法で表示したり、カスタムのイベント・データを表示する場合は、SQLを使用してカスタム分析レポートを作成できます。
この項の内容は、次のとおりです。
データベースの表とパラメータの詳細なリストは、付録I「WebCenter Portalの分析データベース・スキーマ」を参照してください。
分析データベースから取得する情報を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データ・コントロールを使用します。図47-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
バインド・パラメータは必要に応じて追加できます。パラメータを追加する場合、指定するパラメータ値に基づいて、データ・ソースから取得されるデータを制限できます。この例はSpacesアプリケーション用なので、図47-10に示すように、アプリケーションの名前はwebcenter
に設定し、個人用ページ(ホーム・スペース内のページ)をレポートに含めます。
表47-5 レポート・パラメータ
パラメータ | デフォルト値 | 説明 |
---|---|---|
|
|
対応するアプリケーション名。Spacesの場合は常に |
|
|
Spacesの場合、ホーム・スペースに作成されたページをレポートに含めるかどうかを決定します。 |
|
|
Oracleデータベース内の有効な日付パターン。取得するデータによって異なるため、パターンのすべてのコンポーネントがオプションです。 |
|
|
必要なデータの開始日を決定します。 |
|
|
必要なデータの終了日を決定します。 |
図47-9は、グラフとして表示されるカスタム・レポートを示しています。
この項では、カスタム・レポートの出発点として使用できるSQL文について説明します。これらの文は、フィルタの追加やグループ化など、様々な方法でカスタマイズできます。
データベースの表とパラメータの詳細なリストは、付録I「WebCenter Portalの分析データベース・スキーマ」を参照してください。
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_
この項では、ユーザー固有のメトリックについての問合せのサンプルを示します。次のサンプルがあります。
データベースの表とパラメータの詳細なリストおよびユーザー・プロパティの詳細は、付録I「WebCenter Portalの分析データベース・スキーマ」の第I.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
この項では、特定のメトリックについての問合せのサンプルを示します。次のサンプルがあります。
データベースの表とパラメータの詳細なリストは、付録I「WebCenter Portalの分析データベース・スキーマ」を参照してください。
次の問合せは、特定の期間に特定のユーザーによって実行されたすべてのアクティビティのリストを返します。
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