この付録では、データの視覚化の作成を必要とする多様なビジネス・シナリオ、およびWebCenter Portalのデータ・プレゼンタを使用してこれらの要件を満たす方法について説明します。
この付録の内容は、次のとおりです。
権限: 共有データ・プレゼンタ・アセットでこの付録のタスクを実行するには、個別のデータ・プレゼンタ・アセット( ポータル・レベルのデータ・プレゼンタ・アセットでこの付録のタスクを実行するには、個別のデータ・プレゼンタ・アセットに対してポータル・レベルの権限 |
OTNのサンプル・アプリケーション
この付録の一部の例について作成されたサンプル・アプリケーションが、Oracle Technology Network (OTN)で利用可能です。次のOTNのページには、データ・プレゼンタ固有のサンプルや、WebCenter Portalの様々な機能を説明する、その他のサンプル・アプリケーションへのリンクが用意されています。
http://www.oracle.com/technetwork/middleware/webcenter/ps3-samples-176806.html
各サンプルで使用可能なreadme
ファイルは、アプリケーションが実際のユースケース用にアプリケーションを拡張またはカスタマイズするためのガイダンスを提供する内容について説明します。
分析は、WebCenter Portalアプリケーション全体の、コミュニティ・トラフィック、ポートレット・トラフィック、検索済キーワード、レスポンス時間、使用動作などのメトリックを表示します。この例では、分析データ・ソースから取得されるデータを使用してタスク・フローを作成する方法について説明します。次のトピックが含まれます:
システム管理者がWebCenter Portalのツールとサービスを構成している場合、WebCenter Portalではデフォルトで分析接続ActivitiesDS
が提供されます。この接続を使用してSQLデータ・コントロールを作成し、WebCenter Portalアプリケーションに統計を表示するグラフとしてそのデータ・コントロールを使用できます。
システム管理者は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「分析の管理」の章の説明に従って分析を構成します。
アプリケーションでページの統計を表示するグラフを作成するには:
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
バインド変数を次のように設定します。
startdate - 01/01/2013
dateformat - MM/DD/YYYY
enddate - 01/01/2014
appname - webcenter
ispersonal - 1
手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
Blankタスク・フロー・スタイルに基づいて、タスク・フローPage Hits
を作成します。
手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。
タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してPageStatsデータ・コントロール・アクセッサをグラフとして追加します。
「棒グラフ」タイプを選択します。
「配置」ページで、「X軸」にSPACENAMEおよびPAGENAMEデータ列、「棒」にCOUNT_1_を選択します。
ウィザードの他のすべてのページでデフォルトの値を受け入れます。
手順の詳細は、第28.3.5.4項「グラフ形式でのデータの表示」を参照してください。
図C-1に示すようにグラフが表示されます。
前の例では、WebCenter Portalアプリケーションでページ・ヒットを表示する方法について説明しました。ここでも同様の例を示しますが、この例では、特定のポータルのページ・ヒットのみを表示する機能について説明します。この場合、データ・コントロールの視覚化にパラメータ・フォームが含まれます。このパラメータ・フォームを使用して、ユーザーはポータル名を指定し、グラフでそのポータルの統計を表示できます。
データ・コントロールを作成するには:
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
バインド変数を次のように設定します。
portalname - Home Portal
手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。
図C-2に示すように、問合せをテストし、データ・ソースから取得されるデータを表示します。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
Blankタスク・フロー・スタイルに基づいて、タスク・フローTop Five Page Hits for a Portal
を作成します。
手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。
タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してPageHitsデータ・コントロール・アクセッサをグラフとして追加します。
「棒グラフ」タイプを選択します。
「配置」ページで、「X軸」にPAGENAMEおよびSPACENAMEデータ列、「棒」にHITSを選択します。
「視覚化パラメータ」ページで、portalnameパラメータの横にあるチェック・ボックスを選択します。
ウィザードの他のすべてのページでデフォルトの値を受け入れます。
手順の詳細は、第28.3.5.4項「グラフ形式でのデータの表示」を参照してください。
ホーム・ポータル(データ・コントロールの作成時にportalname
バインド変数のデフォルトとして選択したポータル)のデータを示すグラフが表示されます。
「ポータル名」フィールドに別のポータル名を指定して、「リフレッシュ」をクリックします。そのポータル固有のデータがグラフに表示されます(図C-3)。
この例では、分析からサイト・トラフィック・データを取得して、それを円グラフとして表示する方法について説明します。
ポータル・サイト・トラフィック・データを表示するグラフを作成するには:
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
バインド変数を次のように設定します。
startdate - 01/01/2013
dateformat - MM/DD/YYYY
enddate - 01/01/2014
appname - webcenter
ispersonal - 1
手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
Blankタスク・フロー・スタイルに基づいて、タスク・フローPortal Traffic
を作成します。
手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。
タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してPortalStatsデータ・コントロール・アクセッサをグラフとして追加します。
「円グラフ」タイプを選択します。
「配置」ページで、「スライス」にNAMEデータ列、「円」にHITSを選択します。
ウィザードの他のすべてのページでデフォルトの値を受け入れます。
手順の詳細は、第28.3.5.4項「グラフ形式でのデータの表示」を参照してください。
図C-4に示すようにグラフが表示されます。
この例は、1つのタスク・フローの選択により2番目のタスク・フローのアクションが生成されるようにマスター/ディテール関係の2つのタスク・フローの結付けを行う方法について説明します。
この項には次のトピックが含まれます:
前述の構成を実行した後で、マスター表のユーザー名をクリックすると、ディテールがポップアップ・ウィンドウに表示されます。
マスター・タスク・フローには、過去7日間の指定のポータルに対する上位5つのページ・ビューを含む表が表示されます。
タスク・フローを作成するには:
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つのページ・ヒットが返されます。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
Blankタスク・フロー・スタイルに基づいて、タスク・フローTop 10 Visitor Page Hits
を作成します。
手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。
タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してTopFiveDocViewsForSelectedPortalデータ・コントロール・アクセッサを表として追加します。
「読取り専用表」表タイプを選択します。
「列」ページで、USERIDデータ列を選択します。「表示形式」ドロップダウン・リストから「ハイパーリンク」を選択し、「URL」フィールドにhttp://www.oracle.com
と入力します。「新規ウィンドウで開く」チェック・ボックスを選択します(図C-5)。
ウィザードの他のすべてのページでデフォルトの値を受け入れます。
表に、上位ページ・ヒットにユーザーを加えたリストが表示されます。図C-6に示すように、USERID列には、ハイパーリンクとしてユーザー名が表示されます。
タスク・フローを保存して閉じます。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのタスク・フローを公開します。
詳細は、第20.5.3.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_
バインド変数を次のように設定します。
userid - weblogic
手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
Blankタスク・フロー・スタイルに基づいて、タスク・フローPage Hits for Selected User
を作成します。
手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。
タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してPageHitsForSelectedUserデータ・コントロール・アクセッサをグラフとして追加します。
「棒グラフ」タイプを選択します。
「配置」ページで、「X軸」にSPACENAMEおよびPAGENAMEデータ列、「棒」にHITSを選択します。
「視覚化パラメータ」ページで、useridパラメータの「デフォルト値」に次の値を入力します。
#{pageFlowScope.userid}
ウィザードの他のすべてのページでデフォルトの値を受け入れます。
userid
バインド変数に値が指定されていないため、グラフにはデータが表示されないことに注意してください。
タスク・フロー・パラメータuserid
を作成し、「記憶域」ドロップダウン・リストからpageFlowScopeを選択して、値を#{pageFlowScope.userid}
に設定します(図C-7を参照)。
タスク・フローを保存して閉じます。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのタスク・フローを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
この例では、ユーザーがマスター・タスク・フローのユーザー名をクリックして、そのユーザーのページ・ヒット・グラフを表示するディテール・タスク・フローをポップアップ表示できるように、マスター・タスク・フローとディテール・タスク・フローを結び付ける方法について説明します。
マスター・タスク・フローおよびディテール・タスク・フローを結付けするには:
マスター・タスク・フローTop 10 Visitor Page Hitsのソースを編集します。
詳細は、第20.4.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>
<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>
「ページ定義」タブをクリックし、ディテール・タスク・フローへの参照を追加します。<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タスク・フローを選択し、「アクション」メニューから「ビュー・プロパティ」を選択することによって取得できます。「メタデータ・ファイル」属性は、タスク・フローへの完全なパスを提供します。
マスター/ディテール関係をテストするには、Top 10 Visitor Page Hitsタスク・フローをプレビューします。図C-8に示すように、weblogicなどのユーザー名リンクをクリックすると、そのユーザーのページ・ヒット・グラフがポップアップ・ウィンドウに表示されます。
次の例は、従業員データベースから取得されたデータを表示し、いくつかの簡単な構成を実行することによってデータの視覚化をカスタマイズする方法について説明しています。ここでは、Employee Details
タスク・フローへの表としてEmpDetails
データ・コントロールを追加する方法、および列の表示や非表示、行のソートなど、表で異なるカスタマイズを実行する方法について説明します。内容は、次のとおりです。
次のタスクを実行して、従業員データベースのデータ・コントロールを作成します。
従業員データベースへの接続を作成します。手順の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のJDBCデータ・ソースの作成に関する項を参照してください。
このデータベース接続を使用して、SQLデータ・コントロールEmpDetails
を作成します。次のSQL問合せを指定します。
select ename, empno, mgr, deptno from emp where job in (:jobId) order by empno asc
手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。
この問合せは、職種がjobId
の値に一致するすべての従業員のレコードを返します。レコードは、従業員番号別にソートされます。
バインド変数を次のように設定します。
jobId - SALESMAN
手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
Blankタスク・フロー・スタイルに基づいて、タスク・フローEmployee Details
を作成します。
手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。
タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してEmpDetailsデータ・コントロール・アクセッサを表として追加します。
「読取り専用表」表タイプを選択します。
「タイプ」ページで、「行選択」、「フィルタリング」および「ソート」を選択します。
「アイテム」ページで、MGRを「選択可能アイテム」リストに移動して、表に表示されないようにします。ENAME、EMPNOおよびDEPTNOは「選択済アイテム」リストに残します。
ウィザードの他のすべてのページでデフォルトの値を受け入れます。
手順の詳細は、第28.3.5.2項「表形式でのデータの表示」を参照してください。
図C-9に示すように、各列の上部に空のフィールドを持つ表が表示されます。これらのフィールドを使用して、列のフィルタ条件を指定できます。
データの視覚化にパラメータ・フォームを追加すると、ユーザーが値を指定する入力フィールドを提供できます。この値は、アクセッサがユーザー入力に基づいてデータを表示できるようにデータ・コントロール・アクセッサ・パラメータに渡されます。
データの視覚化にパラメータ・フォームを追加するには:
Blankタスク・フロー・スタイルに基づいて、タスク・フローEmployee Details with Parameter Form
を作成します。
手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。
タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してEmpDetailsデータ・コントロール・アクセッサを表として追加します。
「読取り専用表」表タイプを選択します。
「タイプ」ページで、「行選択」、「フィルタリング」および「ソート」を選択します。
「アイテム」ページで、MGRを「選択可能アイテム」リストに移動して、表に表示されないようにします。ENAME、EMPNOおよびDEPTNOは「選択済アイテム」リストに残します。
「視覚化パラメータ」ページで、jobIdパラメータの横にあるチェック・ボックスを選択します。
ウィザードの他のすべてのページでデフォルトの値を受け入れます。
これで、jobId入力テキスト・フィールドに値を指定して、表の対応するレコードを表示できるようになります。
タスク・フロー・パラメータをデータ・コントロール・パラメータにバインドするには、次の手順を実行します。
Employee Detailsタスク・フローを編集します。
タスク・フロー・パラメータdesignation
を作成し、「記憶域」ドロップダウン・リストからpageFlowScopeを選択して、値を#{pageFlowScope.designation}
に設定します。
表を編集します。「コンポーネント・プロパティ」ダイアログで、「データ」タブをクリックします。
ヒント: 周囲のレイアウト・コンポーネントではなく表のプロパティを編集していることを確認してください。「構造」ビューに切り替える場合は、表を右クリックし、コンテキスト・メニューから「編集」を選択します。 |
jobIdパラメータの「デフォルト値」を、タスク・フロー・パラメータ#{pageFlowScope.designation}
のストレージ値に設定します。
これは、jobId
バインド変数の値をdesignation
パラメータに指定した値と同じにすることで、designation
タスク・フロー・パラメータを使用して、表に表示されるデータを処理します。
手順の詳細は、第28.3.6.3項「データ・コントロール・パラメータのタスク・フロー・パラメータへのバインド」を参照してください。
ページを作成し、そのページにEmployee Detailsタスク・フローを追加します。
手順の詳細は、第28.3.9項「ページでのタスク・フローの使用」を参照してください。
このページでEmployee Detailsタスク・フローを編集し、「パラメータ」タブで、表に対応する詳細を表示するための職種を指定します。
SQL問合せで、ename
、empno
、deptno
およびmgr
列を取得する必要があることを指定しました。ただし、ename
、empno
およびdeptno
列のみ表示することを選択しています。この場合、データ・コントロールは、全4つのデータ列からデータを取得しますが、3つのみ表示します。表のソース・コードを編集することで、表の4番目の列をレンダリングできます。
表の非表示列を表示するには:
Employee Detailsタスク・フローのソースを編集します。
詳細は、第20.4.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>
rendered
属性をtrue
に設定します。
図C-10に示すように、これで表に全部で4つの列が表示されるようになります。
同様に、そのrendered
属性をfalse
に設定して、表示される列を非表示にできます。
WebCenter Portalアプリケーションは、次のリポジトリ接続を使用してシードされます。
WebCenterDS
mds-owsm
mds-SpacesDS
ActivitiesDS
これらの接続のいずれかに対してデータ・コントロールを作成し、それをタスク・フローで使用できます。この例では、WebCenter Portalリポジトリに接続するためにデータ・コントロールを作成し、アプリケーションなどでポータルおよびページに関する詳細を表示する方法について説明します。
WebCenter Portal MDSリポジトリからのデータを表示するには:
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リポジトリからのページ情報を持つデータ・コントロール
このタイプの情報は、表またはグラフのいずれかで表すことができます。この例では、データ・コントロールをグラフとして追加します。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
Blankタスク・フロー・スタイルに基づいて、タスク・フローPage Metrics
を作成します。
手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。
タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してWebCenterPagesデータ・コントロール・アクセッサをグラフとして追加します。
「円グラフ」タイプを選択します。
「配置」ページで、「スライス」にMETRICデータ列、「円」にVALUEを選択します。
ウィザードの他のすべてのページでデフォルトの値を受け入れます。
手順の詳細は、第28.3.5.4項「グラフ形式でのデータの表示」を参照してください。
図C-12に示すようにグラフが表示されます。
WebCenter Portal Webサービスにデータ・コントロールを作成し、インスタンスのポータルのリストなど、アプリケーションおよびポータルに関する情報を取得できます。ただし、Webサービスを公開するには、最初にWebCenter Portalを準備する必要があります。
スタート・ガイド
次の例を使用する前に、WebCenter Portalに対してWS-Securityを構成する必要があります。手順の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WS-Securityの構成」の章を参照してください。WS-Securityを構成しないと、データ・ソースからデータを取得する際にエラーが発生します。
この項では、次のユースケースについて説明します。
この例では、WebCenter Portal Webサービスを使用してポータルのリストを表示する方法について説明します。ユーザーがリンクをクリックしてポータルを表示できるように、ポータル名はハイパーリンクとして表示されます。
WebCenter Portalでポータルのリストを表示するには:
次の例のように、適切なマシン名とポート番号を持つWSDL URLを使用して、Webサービス・データ・コントロールListPortals
(図C-13)を作成します。
http://myserver.example.com:8888/webcenter/SpacesWebService?WSDL
手順の詳細は、第28.2.2.2項「Webサービス・データ・コントロールの作成」を参照してください。
「メソッドの表示」をクリックして、Webサービスで提供されるメソッドを表示します。
「メソッド」リストから、getGroupSpacesを選択します。
「Oracle Web Service Managerのセキュリティ・ポリシー」セクションで、次の追加ポリシーを適用します。
oracle/wss11_saml_token_with_message_protection_client_policy
ヒント: データ・コントロールを作成するには、「次へ」をクリックする必要があります。 |
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
Blankタスク・フロー・スタイルに基づいて、タスク・フローPortals
を作成します。
手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。
タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してListPortalsデータ・コントロールのgetGroupSpacesメソッドのReturn属性を表として追加します。
「読取り専用表」表タイプを選択します。
「列」ページ(図C-14)で、item列を選択します。「表示形式」ドロップダウン・リストから「ハイパーリンク」を選択し、次に示すように、ポータル名を追加するURLを「URL」フィールドに入力します。
/spaces/#{row.item}
「新規ウィンドウで開く」チェック・ボックスを選択します。
ウィザードの他のすべてのページでデフォルトの値を受け入れます。
手順の詳細は、第28.3.5.2項「表形式でのデータの表示」を参照してください。
図C-15に示すようにグラフが表示されます。
この例では、WebCenter Portal Webサービスを使用して、指定されたポータルの名前を変更するフォームを作成する方法について説明します。
フォームを使用してポータルの名前を変更するには:
次の例のように、適切なマシン名とポート番号を持つWSDL URLを使用して、Webサービス・データ・コントロールRenamePortal
を作成します。
http://myserver.example.com:8888/webcenter/SpacesWebService?WSDL
手順の詳細は、第28.2.2.2項「Webサービス・データ・コントロールの作成」を参照してください。
「メソッドの表示」をクリックして、Webサービスで提供されるメソッドを表示します。
「メソッド」リストから、renameGroupSpaceを選択します。
「Oracle Web Service Managerのセキュリティ・ポリシー」セクションで、次の追加ポリシーを適用します。
oracle/wss11_saml_token_with_message_protection_client_policy
ヒント: データ・コントロールを作成するには、「次へ」をクリックする必要があります。 |
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
Blankタスク・フロー・スタイルに基づいて、タスク・フローRename Portal
を作成します。
手順の詳細は、第28.3.3項「データを視覚化するタスク・フローの作成」を参照してください。
タスク・フローを編集し、インライン・リソース・カタログから、RenamePortalデータ・コントロールのrenameGroupSpaceメソッドを「ADFボタン」として追加します。
arg1およびarg0属性を「ラベル付ADF入力テキスト」として追加します。
この手順は、ユーザーが古いポータル名と新しいポータル名を指定できる2つの入力テキスト・フィールドと、変更を適用する1つのボタンを追加します。
タスク・フローを保存して閉じます。
入力テキスト・フィールドのラベルを変更します。
タスク・フローを選択します。「アクション」メニューから「ソースの編集」を選択し、「フラグメント」タブをクリックします。
最初のinputText
コンポーネント(#{bindings.arg0.hints.label}
)のlabel
値をOld Portal Name
と置き換えます。
2番目のinputText
コンポーネント(#{bindings.arg1.hints.label}
)のlabel
値をNew Portal Name
と置き換えます。
「保存して閉じる」をクリックします。
図C-16に示すようにタスク・フローが表示されます。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのタスク・フローを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
これで、任意のページにこのタスク・フローを追加し、ポータル名を変更する機能を提供できるようになります。
この例では、カスタム・タスク・フロー・スタイルを作成し、そのスタイルを使用してタスク・フローを作成する方法について説明します。カスタム・スタイルは、WebCenter Portalのアクティビティ・ストリーム・レイアウトに類似したレイアウトで、ポータルの上位5つのページ・ヒットをリストするように設計されています。ユーザーは、入力テキスト・フィールドを使用して、ページ・ヒットを表示するポータルの名前を指定できます。
この項には次のトピックが含まれます:
WebCenter Portalではタスク・フロー・スタイルの「作成」オプションが提供されないため、既存のタスク・フロー・スタイルをコピーして、そのソース・コードを置き換えることでのみ新しいタスク・フロー・スタイルを作成できます。
カスタム・タスク・フロー・スタイルを構築するには:
Blankタスク・フロー・スタイルのコピーを作成して、それをPageHitsStyle
と名付けます。
手順の詳細は、第20.5.4項「アセットのコピー」を参照してください。
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のように表示されます。
「使用可能」列のチェック・ボックスを選択して、タスク・フロー・スタイルを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
このタスク・フロー・スタイルを使用して、ページ・ヒットを表示するタスク・フローを構築できます。
この例では、PageHitsタスク・フロー・スタイルを使用して、アクティビティ・ストリーム・レイアウトにページ・ヒットを表示するタスク・フローを作成する方法について説明します。これを示すために、ActivitiesDSデータベース接続を使用してSQLデータ・コントロールを作成し、PageHitsタスク・フロー・スタイルに基づくタスク・フローでデータ・コントロールを使用する必要があります。ただし、通常の表またはグラフのレイアウトではなく、アクティビティ・ストリーム・レイアウトでデータ・コントロールからのデータを表示するには、次のタスクを実行する必要があります。
SQLデータ・コントロールを作成します。
新しいPageHits
タスク・フロー・スタイルに基づいてタスク・フローを作成します。
表としてデータ・コントロールを追加します。
表のプロパティからデータ・コントロールのアクセッサIDをコピーします。
表を非表示にします。
アクセッサIDを使用して、データ・コントロールにタスク・フローの入力テキスト・フィールドを結び付けます。
カスタム・スタイルに基づいたタスク・フローを作成するには:
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
バインド変数を次のように設定します。
portalname - Home Portal
手順の詳細は、第28.2.2.1項「SQLデータ・コントロールの作成」を参照してください。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
図C-18に示すように、PageHitsタスク・フロー・スタイルを使用して、タスク・フローTop Five Viewed Documents in a Given Portal
を作成します。
タスク・フローを編集し、インライン・リソース・カタログから、次のオプションを指定してTopFiveViewedDocumentsinaGivenPortalデータ・コントロール・アクセッサを表として追加します。
「読取り専用表」表タイプを選択します。
「視覚化パラメータ」ページで、portalnameパラメータの「デフォルト値」に次の値を入力します。
#{pageFlowScope.bindVarId}
ウィザードの他のすべてのページでデフォルトの値を受け入れます。
手順の詳細は、第28.3.5.2項「表形式でのデータの表示」を参照してください。
アクセッサIDを取得するには:
タスク・フローの「構造」ビューに切り替え、tableコンポーネントを右クリックして「編集」を選択します。
「コンポーネント・プロパティ」ダイアログで、「値」属性の値をコピーします。これは、データ・コントロールのアクセッサIDです。この値は次のようになります。
#{bindings.accessor_gsraffebf20_b500_4880f_bf92_a9d33922a0a7.collectionModel
表を折り返すshowDetailFrameコンポーネントを選択し、コンテキスト・メニューで「コンポーネントの非表示」をクリックします。
iteratorコンポーネントを右クリックして、「編集」を選択します。
「値」フィールドの値を表のプロパティからコピーしたアクセッサIDで置き換えます。
これで、アクティビティ・ストリームのようなシード済レイアウトを使用したタスク・フローになりました。
タスク・フローを保存して閉じます。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのタスク・フローを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
ページでタスク・フローを使用します。図C-19のように表示されます。
この例では、日付範囲を指定するフィールドを持つカスタム・タスク・フロー・スタイル、および指定された日付範囲のデータの視覚化を表示するコンテンツ領域の作成方法について説明します。図C-20に、このようなタスク・フロー・スタイルを使用して作成されたタスク・フローを示します。この例では、カスタム・スタイルを使用してタスク・フローを作成する方法についても説明します。
この項には次のトピックが含まれます:
WebCenter Portalではタスク・フロー・スタイルの「作成」オプションが提供されないため、既存のタスク・フロー・スタイルのコピーを作成して、そのソース・コードを置き換えることでのみ新しいタスク・フロー・スタイルを構築できます。
カスタム・タスク・フロー・スタイルを構築するには:
Blankタスク・フロー・スタイルのコピーを作成して、それをInput Dates
と名付けます。
手順の詳細は、第20.5.4項「アセットのコピー」を参照してください。
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に示すようにタスク・フロー・スタイルが表示されます。
「使用可能」列のチェック・ボックスを選択して、タスク・フロー・スタイルを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
このタスク・フロー・スタイルを使用してタスク・フローを構築し、コンテンツ領域に、選択した視覚化を移入します。
この例では、Input Dates
タスク・フロー・スタイルを使用して、指定された日付範囲のページ・ヒットのグラフを表示するタスク・フローの作成方法について説明します。これを示すために、ActivitiesDSデータベース接続を使用してSQLデータ・コントロールを作成し、Input Datesタスク・フロー・スタイルに基づくタスク・フローでデータ・コントロールを使用する必要があります。
カスタム・タスク・フロー・スタイルを使用するには:
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_
バインド変数を次のように設定します。
startdate - 01/01/2013
dateformat - MM/DD/YYYY
enddate - 01/01/2014
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
図C-22に示すように、Input Datesタスク・フロー・スタイルを使用して、タスク・フローPage Usage Between Two Dates
を作成します。
図C-22 「タスク・フローの新規作成」ダイアログのInput Datesタスク・フロー・スタイル
タスク・フローを編集し、次のオプションを指定してPage Usage Between Two Datesデータ・コントロール・アクセッサをグラフとして追加します。
「棒グラフ」タイプを選択します。
「配置」ページで、「X軸」にPAGENAMEおよびSPACENAMEデータ列、「棒」にHITSを選択します。
ウィザードの他のすべてのページでデフォルトの値を受け入れます。
グラフにデフォルトの日付のデータが表示されます。「開始日」および「終了日」を変更し、「実行」をクリックして別のデータを表示します(図C-23)。
この例では、マスター/ディテール関係で結付けされた2つのタスク・フローを表示し、マスター・タスク・フローでの選択によってディテール・タスク・フローのGoogle Mapアドレスを更新する方法について説明します(図C-24)。
このようなタスク・フローを作成する手順には、次のものがあります。
デモ目的で静的データを取得するためのSQLデータ・コントロールの作成。
静的表としてこのデータ・コントロールを使用するマスター・タスク・フローの作成。
表のユーザー名列へのハイパーリンクの追加。
最新のGoogle Maps API Version 3を統合するためのディテール・タスク・フローの作成。
マスター表のレコードをクリックするとGoogle Mapの場所が変更されるように、マスター・タスク・フローとディテール・タスク・フローを結び付ける。
この項には次のトピックが含まれます:
この例では、select * from dual
文を使用して、アドレス・データを取得するためにデータ・コントロールを作成します。既存のデータ・ソース接続を使用して、データ・コントロールを作成できます。即時に、必要なSQLデータ・ソース接続でこれを置き換える必要があります。データ・コントロールを作成するには:
使用可能なデータベース接続を使用して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
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのデータ・コントロールを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
この例では、Google Mapを表示するディテール・タスク・フローの作成方法について説明します。
ディテール・タスク・フローを作成するには:
Blankタスク・フロー・スタイルに基づいて、タスク・フローBasic Maps
を作成します。
タスク・フローのソース・コードを編集します。
詳細は、第20.4.2項「アセットのソース・コードの編集」を参照してください。
「ソースの編集」ダイアログで、「フラグメント」タブのコードを次のものと置き換えます。
<?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
パラメータを解析します。
「保存して閉じる」をクリックします。
タスク・フローを編集して、「タスク・フロー・プロパティ」をクリックします。
「使用可能」列のチェック・ボックスを選択して、リソース・カタログのタスク・フローを公開します。
詳細は、第20.5.3.1項「アセットの表示」を参照してください。
この例では、表としてaddresses
データ・コントロールおよびBasic Maps
タスク・フローを使用するマスター・タスク・フローの作成方法について説明します。マスター・タスク・フローを作成するには:
この例では、ユーザーが表内の名前をクリックしてマップの対応する場所を示すことができるように、マスター・タスク・フローとディテール・タスク・フローを結付けする方法について説明します。マスター・タスク・フローとディテール・タスク・フローの結付けを行うには:
マスター・タスク・フローAddress on Google Maps
を編集して、Basic Mapsタスク・フローのプロパティを編集します(図C-28)。
ヒント: Basic Mapsタスク・フローの「編集」アイコンが表示されない場合は、インライン・リソース・カタログを非表示にしてみてください。 |
「コンポーネント・プロパティ」ダイアログで、2つのタスク・フロー・パラメータCityおよびStateの値を次のように変更します。
City: #{empty dataComposerViewContext.dataSelection.CITY ? 'NULL' : dataComposerViewContext.dataSelection.CITY}
State: #{empty dataComposerViewContext.dataSelection.STATE ? 'NULL' : dataComposerViewContext.dataSelection.STATE}
マップのヘッダーを非表示にするには、「表示オプション」タブをクリックして、「ヘッダーの表示」チェック・ボックスの選択を解除します。
「OK」をクリックして変更を保存します。
マップに、表に現在選択されている名前に対応する場所が表示されます。
「保存」→「閉じる」をクリックして、編集モードを終了します。
図C-30に示すようにタスク・フローが表示されます。
必要に応じて、表がマップの左側に表示されるように、タスク・フローのレイアウトを変更できます。マスター・タスク・フローのレイアウトを調整するには:
マスター・タスク・フロー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">
次に示すように、閉じタグ</cust:panelCustomizable>
を2つのshowDetailFrame
タグの間に移動します。
</showDetailFrame> </cust:panelCustomizable> <showDetailFrame>
表のデフォルトの選択を無効にするには、<table>
タグのselectedRowKeys
属性を削除します。
必要に応じてマップがストレッチすることを確認するには、columnStretching
属性をlast
に変更します。
マスター/ディテール・タスク・フローをさらにテストするには、ページを作成し、それにAddress on Google Maps
タスク・フローを追加します。
ページのタスク・フローを編集し、「コンテンツのストレッチ」オプションをauto
に設定します。
注意: ページに最新の変更を反映するには、「リフレッシュ」ボタンをクリックするのではなく、URLを直接使用して再度ページを開く必要がある場合があります。 |
図C-31に示すようにタスク・フローが表示されます。
表内の行を選択します。マップに、選択した行に対応する場所が表示されます。