ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter Portalでのポータルの構築
11gリリース1 (11.1.1.8.3)
E50013-03
  目次へ移動
目次

前
 
次
 

C データ・プレゼンタの例

この付録では、データの視覚化の作成を必要とする多様なビジネス・シナリオ、およびWebCenter Portalのデータ・プレゼンタを使用してこれらの要件を満たす方法について説明します。

この付録の内容は、次のとおりです。


権限:

共有データ・プレゼンタ・アセットでこの付録のタスクを実行するには、個別のデータ・プレゼンタ・アセット(Data ControlsTask FlowsおよびTask Flow Styles)に対して、アプリケーション・レベルのCreate, Edit, and Delete権限が必要です。Application Specialistロールを持つユーザーは、これらの権限を自動的に付与されます。アプリケーション・レベルの権限の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーションのロールと権限の理解に関する項を参照してください。

ポータル・レベルのデータ・プレゼンタ・アセットでこの付録のタスクを実行するには、個別のデータ・プレゼンタ・アセットに対してポータル・レベルの権限Create, Edit, and Delete Assets (標準権限)またはCreate, Edit, and Delete (アドバンスト権限)が必要です。ポータル・レベルの権限の詳細は、第29.1項「ポータルのロールと権限について」を参照してください。



注意:

この付録では、タスクを実行する手順の概要についてのみ説明します。手順の詳細は、第28章「データ・プレゼンタの使用」を参照してください。


OTNのサンプル・アプリケーション

この付録の一部の例について作成されたサンプル・アプリケーションが、Oracle Technology Network (OTN)で利用可能です。次のOTNのページには、データ・プレゼンタ固有のサンプルや、WebCenter Portalの様々な機能を説明する、その他のサンプル・アプリケーションへのリンクが用意されています。

http://www.oracle.com/technetwork/middleware/webcenter/ps3-samples-176806.html

各サンプルで使用可能なreadmeファイルは、アプリケーションが実際のユースケース用にアプリケーションを拡張またはカスタマイズするためのガイダンスを提供する内容について説明します。

C.1 分析からのデータの表示

分析は、WebCenter Portalアプリケーション全体の、コミュニティ・トラフィック、ポートレット・トラフィック、検索済キーワード、レスポンス時間、使用動作などのメトリックを表示します。この例では、分析データ・ソースから取得されるデータを使用してタスク・フローを作成する方法について説明します。次のトピックが含まれます:

システム管理者がWebCenter Portalのツールとサービスを構成している場合、WebCenter Portalではデフォルトで分析接続ActivitiesDSが提供されます。この接続を使用してSQLデータ・コントロールを作成し、WebCenter Portalアプリケーションに統計を表示するグラフとしてそのデータ・コントロールを使用できます。

システム管理者は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「分析の管理」の章の説明に従って分析を構成します。

C.1.1 ページ・ヒットを表示するグラフの作成

アプリケーションでページの統計を表示するグラフを作成するには:

  1. ActivitiesDS接続を使用して、SQLデータ・コントロールPageStatsを作成します。次のSQL問合せを指定します。

    SELECT space.name_ spaceName, page.name_ pageName, 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
    
  2. バインド変数を次のように設定します。

    • startdate - 01/01/2013

    • dateformat - MM/DD/YYYY

    • enddate - 01/01/2014

    • appname - webcenter

    • ispersonal - 1

    手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。

  3. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  4. Blankタスク・フロー・スタイルに基づいて、タスク・フローPage Hitsを作成します。

    手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。

  5. タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してPageStatsデータ・コントロール・アクセッサをグラフとして追加します。

    • 「棒グラフ」タイプを選択します。

    • 「配置」ページで、「X軸」SPACENAMEおよびPAGENAMEデータ列、「棒」COUNT_1_を選択します。

    • ウィザードの他のすべてのページでデフォルトの値を受け入れます。

    手順の詳細は、第28.3.5.4項「グラフ形式でのデータの表示」を参照してください。

    図C-1に示すようにグラフが表示されます。

    図C-1 ページ・ヒットを表示する棒グラフ

    図C-1の説明が続きます
    「図C-1 ページ・ヒットを表示する棒グラフ」の説明

C.1.2 ポータルのページ・ヒットのグラフを表示するパラメータ化タスク・フローの使用

前の例では、WebCenter Portalアプリケーションでページ・ヒットを表示する方法について説明しました。ここでも同様の例を示しますが、この例では、特定のポータルのページ・ヒットのみを表示する機能について説明します。この場合、データ・コントロールの視覚化にパラメータ・フォームが含まれます。このパラメータ・フォームを使用して、ユーザーはポータル名を指定し、グラフでそのポータルの統計を表示できます。

データ・コントロールを作成するには:

  1. ActivitiesDS接続を使用して、SQLデータ・コントロールPageHitsを作成します。次のSQL問合せを指定します。

    SELECT * FROM
    (SELECT page.name_ pageName, space.name_ spaceName, COUNT(1) hits 
    FROM asdim_users u, asdim_wc_pages_0 page, asdim_wc_applica_0 app, asdim_wc_groupsp_0 space, asfact_wc_pagevie_0 fact 
    WHERE fact.page_ = page.id AND fact.userid = u.id AND fact.application_ = app.id 
    AND fact.groupspace_ = space.id AND fact.occurred BETWEEN(SYSDATE-6) AND (SYSDATE+1) AND app.name_ = 'webcenter' 
    AND u.userid <> 'anonymous' AND  upper(space.name_) LIKE upper(:portalname) 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 page.name_, space.name_ ORDER BY hits DESC) 
    WHERE rownum <= 5 ORDER BY rownum
    
  2. バインド変数を次のように設定します。

    • portalname - Home Portal

    手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。

  3. 図C-2に示すように、問合せをテストし、データ・ソースから取得されるデータを表示します。

    図C-2 SQLデータ・コントロールの問合せテストの結果

    図C-2の説明が続きます
    「図C-2 SQLデータ・コントロールの問合せテストの結果」の説明

  4. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  5. Blankタスク・フロー・スタイルに基づいて、タスク・フローTop Five Page Hits for a Portalを作成します。

    手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。

  6. タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してPageHitsデータ・コントロール・アクセッサをグラフとして追加します。

    • 「棒グラフ」タイプを選択します。

    • 「配置」ページで、「X軸」PAGENAMEおよびSPACENAMEデータ列、「棒」HITSを選択します。

    • 「視覚化パラメータ」ページで、portalnameパラメータの横にあるチェック・ボックスを選択します。

    • ウィザードの他のすべてのページでデフォルトの値を受け入れます。

      手順の詳細は、第28.3.5.4項「グラフ形式でのデータの表示」を参照してください。

      ホーム・ポータル(データ・コントロールの作成時にportalnameバインド変数のデフォルトとして選択したポータル)のデータを示すグラフが表示されます。

  7. 「ポータル名」フィールドに別のポータル名を指定して、「リフレッシュ」をクリックします。そのポータル固有のデータがグラフに表示されます(図C-3)。

    図C-3 指定されたポータルのページ・ヒットを表示する棒グラフ

    図C-3の説明が続きます
    「図C-3 指定されたポータルのページ・ヒットを表示する棒グラフ」の説明

C.1.3 ポータル・サイト・トラフィック・データを表示するグラフの作成

この例では、分析からサイト・トラフィック・データを取得して、それを円グラフとして表示する方法について説明します。

ポータル・サイト・トラフィック・データを表示するグラフを作成するには:

  1. ActivitiesDS接続を使用して、SQLデータ・コントールPortalStatsを作成します。次のSQL問合せを指定します。

    SELECT 'Portals' 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
    
  2. バインド変数を次のように設定します。

    • startdate - 01/01/2013

    • dateformat - MM/DD/YYYY

    • enddate - 01/01/2014

    • appname - webcenter

    • ispersonal - 1

    手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。

  3. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  4. Blankタスク・フロー・スタイルに基づいて、タスク・フローPortal Trafficを作成します。

    手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。

  5. タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してPortalStatsデータ・コントロール・アクセッサをグラフとして追加します。

    • 「円グラフ」タイプを選択します。

    • 「配置」ページで、「スライス」NAMEデータ列、「円」HITSを選択します。

    • ウィザードの他のすべてのページでデフォルトの値を受け入れます。

    手順の詳細は、第28.3.5.4項「グラフ形式でのデータの表示」を参照してください。

    図C-4に示すようにグラフが表示されます。

    図C-4 ポータル・トラフィック統計を表示するグラフ

    図C-4の説明が続きます
    「図C-4 ポータル・トラフィック統計を表示するグラフ」の説明

C.1.4 マスター/ディテール関係の2つのタスク・フローを使用したデータの表示

この例は、1つのタスク・フローの選択により2番目のタスク・フローのアクションが生成されるようにマスター/ディテール関係の2つのタスク・フローの結付けを行う方法について説明します。

この項には次のトピックが含まれます:

前述の構成を実行した後で、マスター表のユーザー名をクリックすると、ディテールがポップアップ・ウィンドウに表示されます。

C.1.4.1 マスター・データ・コントロールおよびタスク・フローの作成

マスター・タスク・フローには、過去7日間の指定のポータルに対する上位5つのページ・ビューを含む表が表示されます。

タスク・フローを作成するには:

  1. ActivitiesDS接続を使用して、SQLデータ・コントールTopFiveDocViewsForSelectedPortalを作成します。次のSQL問合せを指定します。

    select * from
     (select  u.id id , u.userid userid, count(fact.userid)  pageviews
    from asdim_users u , asfact_wc_pagevie_0 fact,asdim_wc_applica_0 app 
    where fact.userid=u.id
    and u.userid <> 'anonymous' 
    and fact.application_ = app.id 
    and app.name_ = 'webcenter'  
    and fact.occurred 
    BETWEEN (SYSDATE-7) and ( SYSDATE+1)
    group by u.id,u.userid
    order by pageviews desc )
    where rownum<11
    

    手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。

    この問合せでは、過去7日間の指定のポータルに対する上位5つのページ・ヒットが返されます。

  2. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  3. Blankタスク・フロー・スタイルに基づいて、タスク・フローTop 10 Visitor Page Hitsを作成します。

    手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。

  4. タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してTopFiveDocViewsForSelectedPortalデータ・コントロール・アクセッサを表として追加します。

    • 「読取り専用表」表タイプを選択します。

    • 「列」ページで、USERIDデータ列を選択します。「表示形式」ドロップダウン・リストから「ハイパーリンク」を選択し、「URL」フィールドにhttp://www.oracle.comと入力します。「新規ウィンドウで開く」チェック・ボックスを選択します(図C-5)。

    • ウィザードの他のすべてのページでデフォルトの値を受け入れます。

    図C-5 ハイパーリンクとしての列の表示

    図C-5の説明が続きます
    「図C-5 ハイパーリンクとしての列の表示」の説明

    表に、上位ページ・ヒットにユーザーを加えたリストが表示されます。図C-6に示すように、USERID列には、ハイパーリンクとしてユーザー名が表示されます。

    図C-6 上位ページ・ヒットを表示するマスター・タスク・フロー

    図C-6の説明が続きます
    「図C-6 上位ページ・ヒットを表示するマスター・タスク・フロー」の説明

  5. タスク・フローを保存して閉じます。

  6. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのタスク・フローを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

C.1.4.2 ディテール・データ・コントロールおよびタスク・フローの作成

表に上位ページ・ヒットが表示され、ユーザー名がハイパーリンクされる、マスター・タスク・フローの作成方法について説明しました。次の手順は、マスター・タスク・フローのユーザー名をクリックすると表示されるディテール・タスク・フローの作成です。この例では、指定されたユーザーのすべてのページ・ヒットのグラフを表示するディテール・タスク・フローの作成方法について説明します。

ディテール・データ・コントロールおよびタスク・フローを作成するには:

  1. ActivitiesDS接続を使用して、SQLデータ・コントロールPageHitsForSelectedUserを作成します。次のSQL問合せを指定します。

    SELECT page.name_ pageName, space.name_ spaceName, COUNT(1) hits 
    FROM asdim_users u, asdim_wc_pages_0 page, asdim_wc_applica_0 app, 
    asdim_wc_groupsp_0 space, asfact_wc_pagevie_0 fact 
    WHERE fact.page_          = page.id AND fact.userid = u.id  
    AND u.userid=(:userid) AND fact.application_ = app.id 
    AND fact.groupspace_  = space.id AND fact.occurred 
    BETWEEN (SYSDATE-7) and SYSDATE and app.name_ = 'webcenter'  
    AND u.userid <> 'anonymous' 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 page.name_, space.name_
    
  2. バインド変数を次のように設定します。

    • userid - weblogic

    手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。

  3. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  4. Blankタスク・フロー・スタイルに基づいて、タスク・フローPage Hits for Selected Userを作成します。

    手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。

  5. タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してPageHitsForSelectedUserデータ・コントロール・アクセッサをグラフとして追加します。

    • 「棒グラフ」タイプを選択します。

    • 「配置」ページで、「X軸」SPACENAMEおよびPAGENAMEデータ列、「棒」HITSを選択します。

    • 「視覚化パラメータ」ページで、useridパラメータの「デフォルト値」に次の値を入力します。

      #{pageFlowScope.userid}
      
    • ウィザードの他のすべてのページでデフォルトの値を受け入れます。

    useridバインド変数に値が指定されていないため、グラフにはデータが表示されないことに注意してください。

  6. タスク・フロー・パラメータuseridを作成し、「記憶域」ドロップダウン・リストからpageFlowScopeを選択して、値を#{pageFlowScope.userid}に設定します(図C-7を参照)。

    図C-7 ディテール・タスク・フローに定義されたパラメータ

    図C-7の説明が続きます
    「図C-7 ディテール・タスク・フローに定義されたパラメータ」の説明

  7. タスク・フローを保存して閉じます。

  8. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのタスク・フローを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

C.1.4.3 マスター・タスク・フローとディテール・タスク・フローの結付け

この例では、ユーザーがマスター・タスク・フローのユーザー名をクリックして、そのユーザーのページ・ヒット・グラフを表示するディテール・タスク・フローをポップアップ表示できるように、マスター・タスク・フローとディテール・タスク・フローを結び付ける方法について説明します。

マスター・タスク・フローおよびディテール・タスク・フローを結付けするには:

  1. マスター・タスク・フローTop 10 Visitor Page Hitsのソースを編集します。

    詳細は、第20.4.2項「アセットのソース・コードの編集」を参照してください。

  2. 「ソースの編集」ダイアログの「フラグメント」タブをクリックして、ポップアップのディテール・タスク・フローを参照するために、次のコードを<af:panelGroupLayout id="pgl1">の下に貼り付けます。

    <af:popup id="popup1" launcherVar="source" eventContext="launcher" contentDelivery="lazyUncached">
      <af:dialog>
        <af:region xmlns:af="http://xmlns.oracle.com/adf/faces/rich" id="oc_449838760region1" 
                   value="#{bindings.popTaskflow.regionModel}"/>
      </af:dialog>
      <af:setPropertyListener from="#{source.attributes.userid}"
                              to="#{viewScope.userid}" type="popupFetch"/>
    </af:popup>
    
  3. <goLink>コード・セグメントを検索し、それを次で置き換えて、USERID列にポップアップ・ダイアログを起動するコマンド・リンクが表示されるようにします。

    <af:commandLink text="#{row.bindings.USERID.inputValue}" id="userLink">
      <af:clientAttribute name="userid" value="#{row.bindings.USERID.inputValue}"/>
      <af:showPopupBehavior popupId="::popup1" alignId="userLink" align="afterEnd"/>
    </af:commandLink>
    
  4. 「ページ定義」タブをクリックし、ディテール・タスク・フローへの参照を追加します。<executable>タグ内で<iterator>タグの下に次のコードを貼り付けます。

    <taskFlow id="popTaskflow" taskFlowId="details_taskflow_definition_path#blanktaskflow" 
              xmlns="http://xmlns.oracle.com/adf/controller/binding" Refresh="ifNeeded">
      <parameters>
        <parameter id="userid" value="#{viewScope.userid}"/>
      </parameters>
    </taskFlow>
    

    ここで、details_taskflow_definition_pathは、インスタンスのPageHitsForSelectedUserタスク・フローへのパスです。たとえば、/oracle/webcenter/siteresources/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/taskFlow/gsr34e6278e_9e9a_45eb_bbbf_31aa5ae34381/taskflow-definition.xmlのようになります。

    このパスは、PageHitsForSelectedUserタスク・フローを選択し、「アクション」メニューから「ビュー・プロパティ」を選択することによって取得できます。「メタデータ・ファイル」属性は、タスク・フローへの完全なパスを提供します。

  5. マスター/ディテール関係をテストするには、Top 10 Visitor Page Hitsタスク・フローをプレビューします。図C-8に示すように、weblogicなどのユーザー名リンクをクリックすると、そのユーザーのページ・ヒット・グラフがポップアップ・ウィンドウに表示されます。

    図C-8 2つのタスク・フロー間のマスター/ディテール関係

    図C-8の説明が続きます
    「図C-8 2つのタスク・フロー間のマスター/ディテール関係」の説明

C.2 SQLデータ・コントロールからの従業員データの表示

次の例は、従業員データベースから取得されたデータを表示し、いくつかの簡単な構成を実行することによってデータの視覚化をカスタマイズする方法について説明しています。ここでは、Employee Detailsタスク・フローへの表としてEmpDetailsデータ・コントロールを追加する方法、および列の表示や非表示、行のソートなど、表で異なるカスタマイズを実行する方法について説明します。内容は、次のとおりです。

C.2.1 SQLデータ・コントロールを作成してタスク・フローで使用する方法

次のタスクを実行して、従業員データベースのデータ・コントロールを作成します。

  1. 従業員データベースへの接続を作成します。手順の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のJDBCデータ・ソースの作成に関する項を参照してください。

  2. このデータベース接続を使用して、SQLデータ・コントロールEmpDetailsを作成します。次のSQL問合せを指定します。

    select ename, empno, mgr, deptno from emp where job in (:jobId) order by empno asc
    

    手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。

    この問合せは、職種がjobIdの値に一致するすべての従業員のレコードを返します。レコードは、従業員番号別にソートされます。

  3. バインド変数を次のように設定します。

    • jobId - SALESMAN

    手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。

  4. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  5. Blankタスク・フロー・スタイルに基づいて、タスク・フローEmployee Detailsを作成します。

    手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。

  6. タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してEmpDetailsデータ・コントロール・アクセッサを表として追加します。

    • 「読取り専用表」表タイプを選択します。

    • 「タイプ」ページで、「行選択」「フィルタリング」および「ソート」を選択します。

    • 「アイテム」ページで、MGR「選択可能アイテム」リストに移動して、表に表示されないようにします。ENAMEEMPNOおよびDEPTNO「選択済アイテム」リストに残します。

    • ウィザードの他のすべてのページでデフォルトの値を受け入れます。

    手順の詳細は、第28.3.5.2項「表形式でのデータの表示」を参照してください。

    図C-9に示すように、各列の上部に空のフィールドを持つ表が表示されます。これらのフィールドを使用して、列のフィルタ条件を指定できます。

    図C-9 従業員詳細タスク・フローの表

    図C-9の説明が続きます
    「図C-9 従業員詳細タスク・フローの表」の説明

C.2.2 データの視覚化へのパラメータ・フォームの追加

データの視覚化にパラメータ・フォームを追加すると、ユーザーが値を指定する入力フィールドを提供できます。この値は、アクセッサがユーザー入力に基づいてデータを表示できるようにデータ・コントロール・アクセッサ・パラメータに渡されます。

データの視覚化にパラメータ・フォームを追加するには:

  1. Blankタスク・フロー・スタイルに基づいて、タスク・フローEmployee Details with Parameter Formを作成します。

    手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。

  2. タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してEmpDetailsデータ・コントロール・アクセッサを表として追加します。

    • 「読取り専用表」表タイプを選択します。

    • 「タイプ」ページで、「行選択」「フィルタリング」および「ソート」を選択します。

    • 「アイテム」ページで、MGR「選択可能アイテム」リストに移動して、表に表示されないようにします。ENAMEEMPNOおよびDEPTNO「選択済アイテム」リストに残します。

    • 「視覚化パラメータ」ページで、jobIdパラメータの横にあるチェック・ボックスを選択します。

    • ウィザードの他のすべてのページでデフォルトの値を受け入れます。

    これで、jobId入力テキスト・フィールドに値を指定して、表の対応するレコードを表示できるようになります。

C.2.3 タスク・フロー・パラメータのデータ・コントロール・パラメータへのバインド

タスク・フロー・パラメータをデータ・コントロール・パラメータにバインドするには、次の手順を実行します。

  1. Employee Detailsタスク・フローを編集します。

  2. タスク・フロー・パラメータdesignationを作成し、「記憶域」ドロップダウン・リストからpageFlowScopeを選択して、値を#{pageFlowScope.designation}に設定します。

  3. 表を編集します。「コンポーネント・プロパティ」ダイアログで、「データ」タブをクリックします。


    ヒント:

    周囲のレイアウト・コンポーネントではなく表のプロパティを編集していることを確認してください。「構造」ビューに切り替える場合は、表を右クリックし、コンテキスト・メニューから「編集」を選択します。


  4. jobIdパラメータの「デフォルト値」を、タスク・フロー・パラメータ#{pageFlowScope.designation}のストレージ値に設定します。

    これは、jobIdバインド変数の値をdesignationパラメータに指定した値と同じにすることで、designationタスク・フロー・パラメータを使用して、表に表示されるデータを処理します。

    手順の詳細は、第28.3.6.3項「データ・コントロール・パラメータのタスク・フロー・パラメータへのバインド」を参照してください。

  5. ページを作成し、そのページにEmployee Detailsタスク・フローを追加します。

    手順の詳細は、第28.3.9項「ページでのタスク・フローの使用」を参照してください。

  6. このページでEmployee Detailsタスク・フローを編集し、「パラメータ」タブで、表に対応する詳細を表示するための職種を指定します。

C.2.4 表の非表示列の表示

SQL問合せで、enameempnodeptnoおよびmgr列を取得する必要があることを指定しました。ただし、enameempnoおよびdeptno列のみ表示することを選択しています。この場合、データ・コントロールは、全4つのデータ列からデータを取得しますが、3つのみ表示します。表のソース・コードを編集することで、表の4番目の列をレンダリングできます。

表の非表示列を表示するには:

  1. Employee Detailsタスク・フローのソースを編集します。

    詳細は、第20.4.2項「アセットのソース・コードの編集」を参照してください。

  2. 「ソースの編集」ダイアログの「フラグメント」タブをクリックし、非表示列のコードを検索します。このコードは、次の例のコードに類似しています。

    <column sortProperty="MGR" filterable="true" sortable="true"
            headerText="#{bindings.accessor_gsrf2d136f7_d907_481d_ad3a_eb2b9dbe7c35.hints.MGR.label}" 
            id="column4" rendered="false">
      <af:inputText value="#{row.bindings.MGR.inputValue}"
                    label="#{bindings.accessor_gsrf2d136f7_d907_481d_ad3a_eb2b9dbe7c35.hints.MGR.label}"
                    required="#{bindings.accessor_gsrf2d136f7_d907_481d_ad3a_eb2b9dbe7c35.hints.MGR.mandatory}"
                    columns="#{bindings.accessor_gsrf2d136f7_d907_481d_ad3a_eb2b9dbe7c35.hints.MGR.displayWidth}"
                    maximumLength="#{bindings.accessor_gsrf2d136f7_d907_481d_ad3a_eb2b9dbe7c35.hints.MGR.precision}" 
                    shortDesc="#{bindings.accessor_gsrf2d136f7_d907_481d_ad3a_eb2b9dbe7c35.hints.MGR.tooltip}" 
                    id="inputText4">
        <f:validator binding="#{row.bindings.MGR.validator}"/>
        <af:convertNumber groupingUsed="false" pattern="#{bindings.accessor_gsrf2d136f7_d907_481d_ad3a_eb2b9dbe7c35.hints.MGR.format}"
                       id="convertNumber3"/>
      </af:inputText>
    </column>
    
  3. rendered属性をtrueに設定します。

    図C-10に示すように、これで表に全部で4つの列が表示されるようになります。

    図C-10 4つの列を表示する表

    図C-10の説明が続きます
    「図C-10 4つの列を表示する表」の説明

同様に、そのrendered属性をfalseに設定して、表示される列を非表示にできます。

C.3 WebCenter Portal MDSリポジトリからのデータの表示

WebCenter Portalアプリケーションは、次のリポジトリ接続を使用してシードされます。

これらの接続のいずれかに対してデータ・コントロールを作成し、それをタスク・フローで使用できます。この例では、WebCenter Portalリポジトリに接続するためにデータ・コントロールを作成し、アプリケーションなどでポータルおよびページに関する詳細を表示する方法について説明します。

WebCenter Portal MDSリポジトリからのデータを表示するには:

  1. mds-SpacesDS接続を使用して、SQLデータ・コントールWebCenterPagesを作成します。次のSQL問合せを指定します。

    select 'Home Portal Pages' metric, count(*) value from mds_paths where path_type = 'DOCUMENT'
    and path_name like '%.jspx' and path_high_cn is null and path_fullname like '%/user/%'
    union select 'Business Role Pages' metric, count(*) value  from mds_paths where path_type = 'DOCUMENT'
    and path_name like '%.jspx' and path_high_cn is null and path_fullname like '%/businessRolePages/%'
    union select 'Portal Template Pages' metric, count(*) value from mds_paths where path_type = 'DOCUMENT'
    and path_name like '%.jspx' and path_high_cn is null and path_fullname like '%/spacetemplate/%'
    union select 'Portal Pages' metric, count(*) value from mds_paths where path_type = 'DOCUMENT'
    and path_name like '%.jspx' and path_high_cn is null and (path_fullname not like '%/user/%'
    and path_fullname not like '%/businessRolePages/%' and path_fullname not like '%/spacetemplate/%')
    

    この問合せにより、各ページ・タイプ数と、WebCenter Portalのデータ・ソースからページ関連のデータが取得されます(図C-11を参照)。

    図C-11 WebCenter Portalリポジトリからのページ情報を持つデータ・コントロール

    図C-11の説明が続きます
    「図C-11 WebCenter Portalリポジトリからのページ情報を持つデータ・コントロール」の説明

    このタイプの情報は、表またはグラフのいずれかで表すことができます。この例では、データ・コントロールをグラフとして追加します。

  2. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  3. Blankタスク・フロー・スタイルに基づいて、タスク・フローPage Metricsを作成します。

    手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。

  4. タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してWebCenterPagesデータ・コントロール・アクセッサをグラフとして追加します。

    • 「円グラフ」タイプを選択します。

    • 「配置」ページで、「スライス」METRICデータ列、「円」VALUEを選択します。

    • ウィザードの他のすべてのページでデフォルトの値を受け入れます。

    手順の詳細は、第28.3.5.4項「グラフ形式でのデータの表示」を参照してください。

    図C-12に示すようにグラフが表示されます。

    図C-12 円グラフとして表示されるページ・メトリック

    図C-12の説明が続きます
    「図C-12 円グラフとして表示されるページ・メトリック」の説明

C.4 WebCenter Portal Webサービス・データ・ソースからのデータの表示

WebCenter Portal Webサービスにデータ・コントロールを作成し、インスタンスのポータルのリストなど、アプリケーションおよびポータルに関する情報を取得できます。ただし、Webサービスを公開するには、最初にWebCenter Portalを準備する必要があります。

スタート・ガイド

次の例を使用する前に、WebCenter Portalに対してWS-Securityを構成する必要があります。手順の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WS-Securityの構成」の章を参照してください。WS-Securityを構成しないと、データ・ソースからデータを取得する際にエラーが発生します。

この項では、次のユースケースについて説明します。

C.4.1 WebCenter Portalでのポータルのリスト表示

この例では、WebCenter Portal Webサービスを使用してポータルのリストを表示する方法について説明します。ユーザーがリンクをクリックしてポータルを表示できるように、ポータル名はハイパーリンクとして表示されます。

WebCenter Portalでポータルのリストを表示するには:

  1. 次の例のように、適切なマシン名とポート番号を持つWSDL URLを使用して、Webサービス・データ・コントロールListPortals (図C-13)を作成します。

    http://myserver.example.com:8888/webcenter/SpacesWebService?WSDL
    

    手順の詳細は、第28.2.2.2項「Webサービス・データ・コントロールの作成」を参照してください。

    図C-13 WebCenter Portal Webサービス・データ・コントロール

    図C-13の説明が続きます
    「図C-13 WebCenter Portal Webサービス・データ・コントロール」の説明

  2. 「メソッドの表示」をクリックして、Webサービスで提供されるメソッドを表示します。

  3. 「メソッド」リストから、getGroupSpacesを選択します。

  4. 「Oracle Web Service Managerのセキュリティ・ポリシー」セクションで、次の追加ポリシーを適用します。

    oracle/wss11_saml_token_with_message_protection_client_policy
    

    ヒント:

    データ・コントロールを作成するには、「次へ」をクリックする必要があります。


  5. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  6. Blankタスク・フロー・スタイルに基づいて、タスク・フローPortalsを作成します。

    手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。

  7. タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してListPortalsデータ・コントロールのgetGroupSpacesメソッドのReturn属性を表として追加します。

    • 「読取り専用表」表タイプを選択します。

    • 「列」ページ(図C-14)で、item列を選択します。「表示形式」ドロップダウン・リストから「ハイパーリンク」を選択し、次に示すように、ポータル名を追加するURLを「URL」フィールドに入力します。

      /spaces/#{row.item}
      

      「新規ウィンドウで開く」チェック・ボックスを選択します。

    • ウィザードの他のすべてのページでデフォルトの値を受け入れます。

    手順の詳細は、第28.3.5.2項「表形式でのデータの表示」を参照してください。

    図C-14 「表の作成」ダイアログの「列」ページの「ハイパーリンク」オプション

    図C-14の説明が続きます
    「図C-14 「表の作成」ダイアログの「列」ページの「ハイパーリンク」オプション」の説明

    図C-15に示すようにグラフが表示されます。

    図C-15 ポータルのリストを表示するタスク・フロー

    図C-15の説明が続きます
    「図C-15 ポータルのリストを表示するタスク・フロー」の説明

C.4.2 フォームを使用したポータルの名前変更

この例では、WebCenter Portal Webサービスを使用して、指定されたポータルの名前を変更するフォームを作成する方法について説明します。

フォームを使用してポータルの名前を変更するには:

  1. 次の例のように、適切なマシン名とポート番号を持つWSDL URLを使用して、Webサービス・データ・コントロールRenamePortalを作成します。

    http://myserver.example.com:8888/webcenter/SpacesWebService?WSDL
    

    手順の詳細は、第28.2.2.2項「Webサービス・データ・コントロールの作成」を参照してください。

  2. 「メソッドの表示」をクリックして、Webサービスで提供されるメソッドを表示します。

  3. 「メソッド」リストから、renameGroupSpaceを選択します。

  4. 「Oracle Web Service Managerのセキュリティ・ポリシー」セクションで、次の追加ポリシーを適用します。

    oracle/wss11_saml_token_with_message_protection_client_policy
    

    ヒント:

    データ・コントロールを作成するには、「次へ」をクリックする必要があります。


  5. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  6. Blankタスク・フロー・スタイルに基づいて、タスク・フローRename Portalを作成します。

    手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。

  7. タスク・フローを編集し、インライン・リソース・カタログから、RenamePortalデータ・コントロールのrenameGroupSpaceメソッドを「ADFボタン」として追加します。

  8. arg1およびarg0属性を「ラベル付ADF入力テキスト」として追加します。

    この手順は、ユーザーが古いポータル名と新しいポータル名を指定できる2つの入力テキスト・フィールドと、変更を適用する1つのボタンを追加します。

  9. タスク・フローを保存して閉じます。

  10. 入力テキスト・フィールドのラベルを変更します。

    1. タスク・フローを選択します。「アクション」メニューから「ソースの編集」を選択し、「フラグメント」タブをクリックします。

    2. 最初のinputTextコンポーネント(#{bindings.arg0.hints.label})のlabel値をOld Portal Nameと置き換えます。

    3. 2番目のinputTextコンポーネント(#{bindings.arg1.hints.label})のlabel値をNew Portal Nameと置き換えます。

    4. 「保存して閉じる」をクリックします。

    図C-16に示すようにタスク・フローが表示されます。

    図C-16 ポータル名を変更するタスク・フロー

    図C-16の説明が続きます
    「図C-16 ポータル名を変更するタスク・フロー」の説明

  11. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのタスク・フローを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

    これで、任意のページにこのタスク・フローを追加し、ポータル名を変更する機能を提供できるようになります。

C.5 事前定義された列を持つカスタム・タスク・フロー・スタイルの構築と使用

この例では、カスタム・タスク・フロー・スタイルを作成し、そのスタイルを使用してタスク・フローを作成する方法について説明します。カスタム・スタイルは、WebCenter Portalのアクティビティ・ストリーム・レイアウトに類似したレイアウトで、ポータルの上位5つのページ・ヒットをリストするように設計されています。ユーザーは、入力テキスト・フィールドを使用して、ページ・ヒットを表示するポータルの名前を指定できます。

この項には次のトピックが含まれます:

C.5.1 カスタム・タスク・フロー・スタイルの構築

WebCenter Portalではタスク・フロー・スタイルの「作成」オプションが提供されないため、既存のタスク・フロー・スタイルをコピーして、そのソース・コードを置き換えることでのみ新しいタスク・フロー・スタイルを作成できます。

カスタム・タスク・フロー・スタイルを構築するには:

  1. Blankタスク・フロー・スタイルのコピーを作成して、それをPageHitsStyleと名付けます。

    手順の詳細は、第20.5.4項「アセットのコピー」を参照してください。

  2. PageHitsStyleのソースを編集して、「フラグメント」タブのコードを次のものと置き換えます。

    <?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">
        <af:panelGroupLayout id="pg2" layout="horizontal" halign="center"
                             inlineStyle="padding-bottom:5px;">
          <af:inputText id="ip1" value="#{pageFlowScope.bindVarId}" label="Portal Name" 
                        shortDesc="Enter A Portal Name, by default it's all portals"/>
          <af:commandButton text="#{dataComposerBundle.MASHUP_STYLES_GO}" id="cb1"/>
        </af:panelGroupLayout>
        <cust:panelCustomizable id="pc1">
          <table border="0" width="100%">
            <af:iterator id="i1" value="#{dataPresenter.dummyData.collectionModel}" var="row">
            <tr class="PortletText1">
              <td width="12px">
                <af:image id="img1" source="/adf/webcenter/star_sm_ena.png"/>
              </td>
              <td>
                <af:outputText id="otCol1" value="#{empty row.USERNAME ? '#{row.USERNAME}' : row.USERNAME}" 
                               inlineStyle="color:#333333; font-size:12px; font-weight:bold;"/>
                <af:spacer id="spacer1" width="5px"/>
                <af:outputText id="otCol2" value="viewed" inlineStyle="color:#333333; font-size:12px;"/>
                <af:spacer id="spacer2" width="5px"/>
                <af:goLink id="gl1" destination="{doc path prefix}#{empty row.DOWNLOAD_URL ? '#{row.DOWNLOAD_URL}' : row.DOWNLOAD_URL}" 
                           targetFrame="_blank" text="#{empty row.DOCNAME ? '#{row.DOCNAME}' : row.DOCNAME}"/>
              </td>
            </tr>
            <tr>
              <td/>
              <td>
                <af:outputText id="otCol3" value="#{empty row.HITS? '#{row.HITS}' : row.HITS}" 
                               inlineStyle="color:#666666; font-size:12px;"/>
                <af:spacer id="spacer3" width="5px"/>
                <af:outputText id="otCol4" value="TIMES" inlineStyle="color:#666666; font-size:12px;"/>
                <af:spacer id="spacer4" width="5px"/>
                <af:outputText id="otCol5" value="in the last 7 days" inlineStyle="color:#333333; font-size:12px;"/>
              </td>
            </tr>
            <tr>
              <td/>
              <td>
                <af:outputText id="otCol6" value="Last Visit at " inlineStyle="color:#333333; font-size:12px;"/>
                <af:outputText id="otCol7" value="#{empty row.LASTVIEWED ? '#{row.LASTVIEWED}' : row.LASTVIEWED}" 
                               inlineStyle="color:#666666; font-size:12px;">
                <af:convertDateTime type="both"/>
                </af:outputText>
              </td>
            </tr>
            </af:iterator>
          </table>
        </cust:panelCustomizable>
      </af:panelGroupLayout>
    </jsp:root>
    

    ここで:

    #{pageFlowScope.bindVarId}は、入力ポータル名を提供する参照です。

    #{dataPresenter.dummyData.collectionModel}は、タスク・フロー・スタイルを使用する際に置き換えられるダミーの参照です。

    #{row.COLUMN}は、タスク・フロー・スタイルが使用される際にデータ・コントロールからデータを参照するプレースホルダです。

    {doc path prefix}は、ドキュメントURLに使用される接頭辞です。ドキュメント・パスの接頭辞を検索するには、「ドキュメント」ページでドキュメントを選択し、「表示」メニューから「リンクの取得」をクリックします。「ダウンロードURL」の最初の部分(pathで終わる)が使用される接頭辞です。例:

    http://www.example.com:8889/webcenter/content/conn/example-ucm/path
    

    タスク・フロー・スタイルをプレビューすると、図C-17のように表示されます。

    図C-17 カスタム・タスク・フロー・スタイルのプレビュー

    図C-17の説明が続きます
    「図C-17 カスタム・タスク・フロー・スタイルのプレビュー」の説明

  3. 「使用可能」列のチェック・ボックスを選択して、タスク・フロー・スタイルを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

    このタスク・フロー・スタイルを使用して、ページ・ヒットを表示するタスク・フローを構築できます。

C.5.2 カスタム・スタイルに基づいたタスク・フローの作成

この例では、PageHitsタスク・フロー・スタイルを使用して、アクティビティ・ストリーム・レイアウトにページ・ヒットを表示するタスク・フローを作成する方法について説明します。これを示すために、ActivitiesDSデータベース接続を使用してSQLデータ・コントロールを作成し、PageHitsタスク・フロー・スタイルに基づくタスク・フローでデータ・コントロールを使用する必要があります。ただし、通常の表またはグラフのレイアウトではなく、アクティビティ・ストリーム・レイアウトでデータ・コントロールからのデータを表示するには、次のタスクを実行する必要があります。

  • SQLデータ・コントロールを作成します。

  • 新しいPageHitsタスク・フロー・スタイルに基づいてタスク・フローを作成します。

  • 表としてデータ・コントロールを追加します。

  • 表のプロパティからデータ・コントロールのアクセッサIDをコピーします。

  • 表を非表示にします。

  • アクセッサIDを使用して、データ・コントロールにタスク・フローの入力テキスト・フィールドを結び付けます。

カスタム・スタイルに基づいたタスク・フローを作成するには:

  1. ActivitiesDS接続を使用して、SQLデータ・コントールTopFiveViewedDocumentsinaGivenPortalを作成します。次の問合せを指定します。

    SELECT * FROM
    (SELECT users.userid  username, doc.name_  docname,doc.path_  download_url, count(1) hits,max(fact.occurred) lastviewed
    FROM asfact_wc_doclib__0 fact , asdim_wc_documen_0 doc , asdim_wc_applica_0 app,asdim_wc_groupsp_0 space , asdim_users users
    WHERE app.id = fact.application_
    AND app.name_ = 'webcenter' 
    AND fact.occurred BETWEEN (SYSDATE-7) AND SYSDATE
    AND fact.document_ = doc.id
    AND doc.name_ is not null 
    AND doc.id is not null 
    AND fact.document_ is not null 
    AND doc.resourceid_ is not null
    AND  fact.GROUPSPACE_ = space.id 
    AND  upper(space.name_) LIKE upper(:portalname) 
    AND space.name_ IS NOT NULL 
    AND fact.userid=users.id
    GROUP BY users.userid, doc.name_,doc.path_
    ORDER BY hits  DESC)
    WHERE rownum <= 5
    ORDER BY rownum 
    
  2. バインド変数を次のように設定します。

    • portalname - Home Portal

    手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。

  3. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  4. 図C-18に示すように、PageHitsタスク・フロー・スタイルを使用して、タスク・フローTop Five Viewed Documents in a Given Portalを作成します。

    図C-18 PageHitsスタイルを選択した「タスク・フローの新規作成」ダイアログ

    図C-18の説明が続きます
    「図C-18 PageHitsスタイルを選択した「タスク・フローの新規作成」ダイアログ」の説明

  5. タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してTopFiveViewedDocumentsinaGivenPortalデータ・コントロール・アクセッサを表として追加します。

    • 「読取り専用表」表タイプを選択します。

    • 「視覚化パラメータ」ページで、portalnameパラメータの「デフォルト値」に次の値を入力します。

      #{pageFlowScope.bindVarId}
      
    • ウィザードの他のすべてのページでデフォルトの値を受け入れます。

    手順の詳細は、第28.3.5.2項「表形式でのデータの表示」を参照してください。

  6. アクセッサIDを取得するには:

    1. タスク・フローの「構造」ビューに切り替え、tableコンポーネントを右クリックして「編集」を選択します。

    2. 「コンポーネント・プロパティ」ダイアログで、「値」属性の値をコピーします。これは、データ・コントロールのアクセッサIDです。この値は次のようになります。

      #{bindings.accessor_gsraffebf20_b500_4880f_bf92_a9d33922a0a7.collectionModel
      
  7. 表を折り返すshowDetailFrameコンポーネントを選択し、コンテキスト・メニューで「コンポーネントの非表示」をクリックします。

  8. iteratorコンポーネントを右クリックして、「編集」を選択します。

  9. 「値」フィールドの値を表のプロパティからコピーしたアクセッサIDで置き換えます。

    これで、アクティビティ・ストリームのようなシード済レイアウトを使用したタスク・フローになりました。

  10. タスク・フローを保存して閉じます。

  11. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのタスク・フローを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  12. ページでタスク・フローを使用します。図C-19のように表示されます。

    図C-19 ポータルの上位5つのページ・ヒットを表示するページ

    図C-19の説明が続きます
    「図C-19 ポータルの上位5つのページ・ヒットを表示するページ」の説明

C.6 日付フィールドを持つカスタム・タスク・フロー・スタイルの構築と使用

この例では、日付範囲を指定するフィールドを持つカスタム・タスク・フロー・スタイル、および指定された日付範囲のデータの視覚化を表示するコンテンツ領域の作成方法について説明します。図C-20に、このようなタスク・フロー・スタイルを使用して作成されたタスク・フローを示します。この例では、カスタム・スタイルを使用してタスク・フローを作成する方法についても説明します。

この項には次のトピックが含まれます:

図C-20 日付フィールドを持つカスタム・タスク・フロー・スタイルを使用したタスク・フロー

図C-20の説明が続きます
「図C-20 日付フィールドを持つカスタム・タスク・フロー・スタイルを使用したタスク・フロー」の説明

C.6.1 カスタム・タスク・フロー・スタイルの構築

WebCenter Portalではタスク・フロー・スタイルの「作成」オプションが提供されないため、既存のタスク・フロー・スタイルのコピーを作成して、そのソース・コードを置き換えることでのみ新しいタスク・フロー・スタイルを構築できます。

カスタム・タスク・フロー・スタイルを構築するには:

  1. Blankタスク・フロー・スタイルのコピーを作成して、それをInput Datesと名付けます。

    手順の詳細は、第20.5.4項「アセットのコピー」を参照してください。

  2. Input Datesのソースを編集して、「フラグメント」タブのコードを次のものと置き換えます。

    <?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="pgl">
        <af:panelGroupLayout id="pg2" layout="horizontal" halign="center" inlineStyle="padding-bottom:5px;">
          <af:panelFormLayout id="pfl1" partialTriggers="ipl" inlineStyle="padding-bottom:5px;">
            <af:inputDate id="ip1" value="#{pageFlowScope.bindVarId1}" label="Start Date" autoSubmit="true"/>
            <af:inputDate id="ip2" value="#{pageFlowScope.bindVarId2}" label="End Date"/>
            <af:commandButton text="#{dataComposerBundle.MASHUP_STYLES_GO}" id="cb1"/>
          </af:panelFormLayout>
        </af:panelGroupLayout>
        <cust:panelCustomizable id="pc1" halign="center"/>
      </af:panelGroupLayout>
    </jsp:root>
    

    inputDateコンポーネントは、2つのデータ・フィールドを提供し、panelCustomizableはコンテンツ領域を提供します。プレビューすると、図C-21に示すようにタスク・フロー・スタイルが表示されます。

    図C-21 日付フィールドを持つカスタム・スタイルのプレビュー

    図C-21の説明が続きます
    「図C-21 日付フィールドを持つカスタム・スタイルのプレビュー」の説明

  3. 「使用可能」列のチェック・ボックスを選択して、タスク・フロー・スタイルを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

    このタスク・フロー・スタイルを使用してタスク・フローを構築し、コンテンツ領域に、選択した視覚化を移入します。

C.6.2 カスタム・スタイルに基づいたタスク・フローの作成

この例では、Input Datesタスク・フロー・スタイルを使用して、指定された日付範囲のページ・ヒットのグラフを表示するタスク・フローの作成方法について説明します。これを示すために、ActivitiesDSデータベース接続を使用してSQLデータ・コントロールを作成し、Input Datesタスク・フロー・スタイルに基づくタスク・フローでデータ・コントロールを使用する必要があります。

カスタム・タスク・フロー・スタイルを使用するには:

  1. ActivitiesDS接続を使用して、SQLデータ・コントロールPage Usage Between Two Datesを作成します。次のSQL問合せを指定します。

    SELECT page.name_ pageName, space.name_ spaceName, COUNT(1) hits
    FROM asdim_users u, asdim_wc_pages_0 page, asdim_wc_applica_0 app, asdim_wc_groupsp_0 space, asfact_wc_pagevie_0 fact 
    WHERE 
     app.name_ = 'webcenter' 
    AND fact.page_ = page.id 
    AND fact.userid = u.id 
    AND fact.application_ = app.id 
    AND fact.groupspace_  = space.id 
    AND fact.occurred BETWEEN to_timestamp_tz(to_char(:startdate), :dateformat) 
    AND to_timestamp_tz(to_char(:enddate), :dateformat) 
    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 page.name_, space.name_ 
    
  2. バインド変数を次のように設定します。

    • startdate - 01/01/2013

    • dateformat - MM/DD/YYYY

    • enddate - 01/01/2014

  3. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

  4. 図C-22に示すように、Input Datesタスク・フロー・スタイルを使用して、タスク・フローPage Usage Between Two Datesを作成します。

    図C-22 「タスク・フローの新規作成」ダイアログのInput Datesタスク・フロー・スタイル

    図C-22の説明が続きます
    「図C-22 「タスク・フローの新規作成」ダイアログのInput Datesタスク・フロー・スタイル」の説明

  5. タスク・フローを編集し、次のオプションを指定してPage Usage Between Two Datesデータ・コントロール・アクセッサをグラフとして追加します。

    • 「棒グラフ」タイプを選択します。

    • 「配置」ページで、「X軸」PAGENAMEおよびSPACENAMEデータ列、「棒」HITSを選択します。

    • ウィザードの他のすべてのページでデフォルトの値を受け入れます。

  6. グラフにデフォルトの日付のデータが表示されます。「開始日」および「終了日」を変更し、「実行」をクリックして別のデータを表示します(図C-23)。

    図C-23 指定された日付範囲のグラフを表示するタスク・フロー

    図C-23の説明が続きます
    「図C-23 指定された日付範囲のグラフを表示するタスク・フロー」の説明

C.7 Google Mapsタスク・フローを含むマスター/ディテール関係のデータの表示

この例では、マスター/ディテール関係で結付けされた2つのタスク・フローを表示し、マスター・タスク・フローでの選択によってディテール・タスク・フローのGoogle Mapアドレスを更新する方法について説明します(図C-24)。

図C-24 表およびGoogle Mapを表示するタスク・フロー

図C-24の説明が続きます
「図C-24 表およびGoogle Mapを表示するタスク・フロー」の説明

このようなタスク・フローを作成する手順には、次のものがあります。

この項には次のトピックが含まれます:

C.7.1 データ・コントロールの作成

この例では、select * from dual文を使用して、アドレス・データを取得するためにデータ・コントロールを作成します。既存のデータ・ソース接続を使用して、データ・コントロールを作成できます。即時に、必要なSQLデータ・ソース接続でこれを置き換える必要があります。データ・コントロールを作成するには:

  1. 使用可能なデータベース接続を使用してSQLデータ・コントロールaddressesを作成し、次の問合せを指定します。

    SELECT 'Steve' Buddy, 'Palo Alto' City, 'CA' State
    FROM dual
    UNION
    SELECT 'Doris' Buddy, 'Belmont' City, 'CA' State
    FROM dual
    UNION
    SELECT 'John' Buddy, 'New York' City, 'NY' State
    FROM dual
    UNION
    SELECT 'Lily' Buddy, 'Boston' City, 'MA' State
    FROM dual
    
  2. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

C.7.2 ディテール・タスク・フローの作成

この例では、Google Mapを表示するディテール・タスク・フローの作成方法について説明します。

ディテール・タスク・フローを作成するには:

  1. Blankタスク・フロー・スタイルに基づいて、タスク・フローBasic Mapsを作成します。

  2. タスク・フローのソース・コードを編集します。

    詳細は、第20.4.2項「アセットのソース・コードの編集」を参照してください。

  3. 「ソースの編集」ダイアログで、「フラグメント」タブのコードを次のものと置き換えます。

    <?xml version='1.0' encoding='UTF-8'?>
    <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
              xmlns:pe="http://xmlns.oracle.com/adf/pageeditor"
              xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"
              xmlns:f="http://java.sun.com/jsf/core"
              xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
              xmlns:trh="http://myfaces.apache.org/trinidad/html">
      <af:resource type="javascript" source="http://maps.google.com/maps/api/js?sensor=true"/>
      <af:resource type="javascript">
      var geocoder;
      var map;
    function initialize(){  
      geocoder = new google.maps.Geocoder();
      var latlng = new google.maps.LatLng(37.529526, -122.263969);  
      var myOptions = {
          zoom: 3,
          center: latlng,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
      map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
    }
    function navigate(event) {
    initialize();
    var city= event.getSource().getProperty('city')+"";
    var state= event.getSource().getProperty('state')+"";
    var address;
    if(city== "undefined"||state== "undefined"||city== "NULL"||state== "NULL"){
    address="CA, USA";
    } else {
    map.setZoom(8);
    address=city+" "+state+" USA";  
    }
      geocoder.geocode( { 'address': address}, function(results, status) 
    {  
     if (status == google.maps.GeocoderStatus.OK) {
         map.setCenter(results[0].geometry.location);
         var marker = new google.maps.Marker({          
            map: map, 
            position: results[0].geometry.location
            });
          } 
    else {
            alert("Geocode was not successful for the following reason: " + status);
          }
        });
    }
    </af:resource>
      <af:panelGroupLayout id="pgl1" layout="horizontal">
        <af:group id="g1">
          <div id="map_canvas" style="width: 600px; height: 600px"/>
        </af:group>
        <af:inlineFrame source="">
          <af:clientListener type="inlineFrameLoad" method="navigate"/>
          <af:clientAttribute name="city" value="#{empty pageFlowScope.city? '' : pageFlowScope.city}"/>
          <af:clientAttribute name="state" value="#{empty pageFlowScope.state ? '' : pageFlowScope.state}"/>
        </af:inlineFrame>
      </af:panelGroupLayout>
    </jsp:root>
    

    太字のコード<af:inline>は、ページがロードされるたびに、navigate Google Map javascriptメソッドをコールし、マップ上のアドレスを更新するためにnavigateメソッドに2つのpageFlowScopeパラメータを解析します。

  4. 「保存して閉じる」をクリックします。

  5. タスク・フローを編集して、「タスク・フロー・プロパティ」をクリックします。

  6. 表C-1および図C-25に示すように、stringタスク・フロー・パラメータを2つ作成します。

    表C-1 Basic Mapsタスク・フローのタスク・フロー・パラメータ

    名前 タイプ 記憶域

    city

    string

    #{pageFlowScope.city}

    state

    string

    #{pageFlowScope.state}


    図C-25 Basic Mapsタスク・フローの新しいパラメータ

    図C-25の説明が続きます
    「図C-25 Basic Mapsタスク・フローの新しいパラメータ」の説明

  7. 「使用可能」列のチェック・ボックスを選択して、リソース・カタログのタスク・フローを公開します。

    詳細は、第20.5.3.1項「アセットの表示」を参照してください。

C.7.3 マスター・タスク・フローの作成

この例では、表としてaddressesデータ・コントロールおよびBasic Mapsタスク・フローを使用するマスター・タスク・フローの作成方法について説明します。マスター・タスク・フローを作成するには:

  1. Blankタスク・フロー・スタイルに基づいて、タスク・フローAddress on Google Mapsを作成します。

  2. 図C-26に示すように、タスク・フローを編集し、Basic Mapsタスク・フローを追加します。

    図C-26 リソース・カタログのBasic Mapsタスク・フロー

    図C-26の説明が続きます
    「図C-26 リソース・カタログのBasic Mapsタスク・フロー」の説明

  3. 「行選択」を有効にして、addressesデータ・コントロール・アクセッサを「読取り専用表」として追加します。

    図C-27に示すように、マスター・タスク・フローの上部にアドレス表、その下部にマップが表示されます。

    図C-27 表とGoogle Mapが表示されたマスター/ディテール・タスク・フロー

    図C-27の説明が続きます
    「図C-27 表とGoogle Mapが表示されたマスター/ディテール・タスク・フロー」の説明

C.7.4 マスター・タスク・フローとディテール・タスク・フローの結付け

この例では、ユーザーが表内の名前をクリックしてマップの対応する場所を示すことができるように、マスター・タスク・フローとディテール・タスク・フローを結付けする方法について説明します。マスター・タスク・フローとディテール・タスク・フローの結付けを行うには:

  1. マスター・タスク・フローAddress on Google Mapsを編集して、Basic Mapsタスク・フローのプロパティを編集します(図C-28)。

    図C-28 Basic Mapsタスク・フローの「編集」アイコン

    図C-28の説明が続きます
    「図C-28 Basic Mapsタスク・フローの「編集」アイコン」の説明


    ヒント:

    Basic Mapsタスク・フローの「編集」アイコンが表示されない場合は、インライン・リソース・カタログを非表示にしてみてください。


  2. 「コンポーネント・プロパティ」ダイアログで、2つのタスク・フロー・パラメータCityおよびStateの値を次のように変更します。

    City: #{empty dataComposerViewContext.dataSelection.CITY ? 'NULL' : dataComposerViewContext.dataSelection.CITY}

    State: #{empty dataComposerViewContext.dataSelection.STATE ? 'NULL' : dataComposerViewContext.dataSelection.STATE}

    図C-29 Basic Mapタスク・フローのプロパティ

    図C-29の説明が続きます
    「図C-29 Basic Mapタスク・フローのプロパティ」の説明

  3. マップのヘッダーを非表示にするには、「表示オプション」タブをクリックして、「ヘッダーの表示」チェック・ボックスの選択を解除します。

  4. 「OK」をクリックして変更を保存します。

    マップに、表に現在選択されている名前に対応する場所が表示されます。

  5. 「保存」「閉じる」をクリックして、編集モードを終了します。

    図C-30に示すようにタスク・フローが表示されます。

    図C-30 Google Mapに結付けされたマスター・タスク・フロー

    図C-30の説明が続きます
    「図C-30 Google Mapに結付けされたマスター・タスク・フロー」の説明

  6. 必要に応じて、表がマップの左側に表示されるように、タスク・フローのレイアウトを変更できます。マスター・タスク・フローのレイアウトを調整するには:

    1. マスター・タスク・フローAddress on Google Mapsのソースを編集し、「フラグメント」タブで、次の行を置き換えます。

      <af:panelGroupLayout id="pgl1">  
         <cust:panelCustomizable id="pc1">
      

      置換後

      <af:panelGroupLayout id="pgl1" layout="horizontal" valign="top">
         <cust:panelCustomizable id="pc1" layout="vertical" valign="top">
      
    2. 次に示すように、閉じタグ</cust:panelCustomizable>を2つのshowDetailFrameタグの間に移動します。

         </showDetailFrame>
      </cust:panelCustomizable>
      <showDetailFrame>
      
    3. 表のデフォルトの選択を無効にするには、<table>タグのselectedRowKeys属性を削除します。

    4. 必要に応じてマップがストレッチすることを確認するには、columnStretching属性をlastに変更します。

  7. マスター/ディテール・タスク・フローをさらにテストするには、ページを作成し、それにAddress on Google Mapsタスク・フローを追加します。

    ページのタスク・フローを編集し、「コンテンツのストレッチ」オプションをautoに設定します。


    注意:

    ページに最新の変更を反映するには、「リフレッシュ」ボタンをクリックするのではなく、URLを直接使用して再度ページを開く必要がある場合があります。


    図C-31に示すようにタスク・フローが表示されます。

    図C-31 マスター/ディテール・タスク・フローを表示するページ

    図C-31の説明が続きます
    「図C-31 マスター/ディテール・タスク・フローを表示するページ」の説明

    表内の行を選択します。マップに、選択した行に対応する場所が表示されます。