ADFデータ・ソースからのラベルおよびツールチップの伝播
ラベルやツールチップなど、ユーザー・インタフェース・ヒントをADFデータ・ソースから伝播して、ユーザーが分析を処理する際に表示できます。
翻訳されたラベルやツールチップが、ユーザーのロケールに基づいてADFデータ・ソース内にある場合、データ・ソースに問い合せて、翻訳されたデータにアクセスできます。分析を作成する際に使用するようにプレゼンテーション列を構成するには、管理ツールを使用します。
このセクションには次のトピックが含まれます:
ラベルおよびツールチップとは
UIヒントを伝播すると、Oracle BI管理ツールのプレゼンテーション列でラベルとツールチップをそれぞれカスタム表示名およびカスタム説明として使用できます。
ラベルは、プロンプトや表ヘッダーで使用され、データ項目の値の前に表示されます。ツールチップは、ユーザーが項目の上に移動したときに表示されるテキストです。ビュー・オブジェクトの各属性には、ラベルとツールチップが関連付けられています。ビュー・オブジェクトは、開発者がSQL問合せの結果を簡単に操作できるようにするためのOracle ADFコンポーネントです。
この図は、JDeveloperの「属性の編集」ダイアログにある「ラベル・テキスト」および「ツールチップ・テキスト」オプションを示しています。
UIヒントのセッション変数ネーミング・スキームについて
セッション変数ネーミング・スキームについて学習します。
セッション変数名は、Oracle WebLogic ServerでOracle Analytics Serverブローカ・サーブレットによって次の形式で生成されます。
ADF_UI Hint Type_Database Name_View Object Name_Attribute's Name
説明:
UI Hint TypeはLABELまたはTOOLTIPです。
Database Nameは、XML問合せのADFQuery
要素のdatabase
属性の値です。一重引用符(')、二重引用符(")、スペースなどの特殊文字はアンダースコア文字に置き換えられます。
View Object Nameはビュー・オブジェクトのname属性です。Oracle ADFでは、名前に特殊文字およびスペースを使用することは禁止されています。
Attribute's Nameは、セッション変数の属性の名前です。Oracle ADFでは、名前に特殊文字およびスペースを使用することは禁止されています。
セッション変数名はすべて大文字です。初期化ブロックでのXMLコードの使用によるUIヒントの問合せにあるXML問合せの例では、次の名前を持つ4つのセッション変数が生成されます。
ADF_LABEL_MY_ORCLADF_EMPLOYEESVIEW_FIRSTNAME
ADF_TOOLTIP_MY_ORCLADF_EMPLOYEESVIEW_FIRSTNAME
ADF_LABEL_MY_ORCLADF_EMPLOYEESVIEW_LASTNAME
ADF_TOOLTIP_MY_ORCLADF_EMPLOYEESVIEW_LASTNAME
プレゼンテーション列に対応する物理列の特定について
各プレゼンテーション列は、セッション変数のネーミング・スキームの要件に従って物理列にマップする必要があります。
プレゼンテーション・レイヤー・オブジェクトに「ADFラベルの生成」または「ADFツールチップの生成」を選択すると、物理列は次のルールを使用して検索されます。
-
プレゼンテーション列を調べ、その論理列を確認します。論理列が既存の論理列から派生している場合、物理列は見つかりません。
-
論理列のデフォルトの集計ルールが「なし」または「合計」以外の場合、物理列は見つかりません。「合計」以外の集計ルールにADF UIヒントを使用しても、意味的に有効ではありません。
-
複数の論理表ソースによって、1つの論理列が複数の物理列にマップされている場合があります。無効になっていない論理表ソースのみが検索されます。
-
非トリビアルな式(物理列名だけでないもの)を使用して、論理列をマップする論理表ソースを検索しないでください。論理表ソースが検索されない場合、物理列は見つかりません。
-
論理表ソースの残りの順序付きリストから、最初の論理表ソースによってマップされている物理列を調べます。物理列は、ビュー・オブジェクト属性にマップする必要があります。その物理列は、タイプOracle ADF 12cの物理データベースの一部として存在している必要があります。
-
この条件を満たす場合、UIヒントを取得するための物理列が見つかります。
-
この条件を満たさない場合、ビュー・オブジェクト属性にマップされている物理列が見つかるまで、引き続き、次の論理表ソースによってマップされている物理列を調べます。
すべての論理表ソースを検索しても条件を満たさなかった場合、物理列は見つかりません。
-
これらのルールを使用して、UIヒントを取得するための物理列が見つかると、事前に決定されたネーミング・スキームに基づく名前を持つセッション変数がカスタム表示名またはカスタム説明に移入されます。「UIヒントのセッション変数ネーミング・スキームについて」を参照してください。
これらのルールを使用して、UIヒントを取得するための物理列が見つからなかった場合、「ADFラベルの生成」および「ADFツールチップの生成」オプションは、無効になった状態で右クリック・メニューに表示されます。
これらのルールを使用して見つかった物理列を使用するかわりに、初期化ブロックでXMLコードを使用して、独自のセッション変数をADF UIヒントで初期化することもできます。その場合、「カスタム表示名」および「カスタム説明」フィールドにこれらのセッション変数を手動で入力する必要があります。初期化ブロックでのXMLコードの使用によるUIヒントの問合せを参照してください。
UIヒントを伝播するためのセッション変数の自動初期化について
セッション変数が作成される時期について学習します。
「ADFラベルの生成」および「ADFツールチップの生成」オプションを使用してOracle ADFのUIヒントのセッション変数名が正常に生成されると、Oracle BIプレゼンテーション・サービスがセッション中に問合せを実行したときに、セッション変数が作成され、初期化されます。
パフォーマンス上の理由から、セッションのログオン段階では、変数の作成と初期化は行われません。変数は遅延処理の許可を使用して作成され、変数がセッションの特定の問合せに必要な場合は初期化されます。
Oracle BIプレゼンテーション・サービスがODBC経由でカスタム表示名およびカスタム説明を問い合せると、Oracle BIサーバーによって、関連するセッション変数が作成されているかどうかが確認されます。変数が作成されなかった場合、Oracle BIサーバーでは適切なXML問合せを動的に生成し、Oracle ADFデータ・ソースからUIヒントを取得します。Oracle BIサーバーでは、そのUIヒントを使用してセッション変数が作成され、初期化されます。パフォーマンスを最適化するために、Oracle BIサーバーでは各ビュー・オブジェクトのUIヒントを問い合せます。Oracle BIサーバーがビュー・オブジェクトの属性のUIヒントを必要とする場合、そのビュー・オブジェクトの下にある全属性のUIヒントに対して問合せが行われ、セッション変数を通して伝播されます。
分析の作成時のOracle ADFデータ・ソースのUIヒントの使用
分析の作成時にOracle ADFデータ・ソースのUIヒントを使用できます。
このタスクを実行するには、次の前提条件を満たす必要があります。
-
Oracle ADFデータ・ソースでUIヒントが構成されています。
-
管理ツールでOracle ADFデータ・ソースの作業用リポジトリが構成されています。
- 「プレゼンテーション」レイヤーの列を右クリックし、「表示名の外部化」→「ADFラベルの生成」を選択し、次に、「記述子の外部化」→「ADFツールチップの生成」を選択して、列のすべてのツールチップ文字列を生成します。
初期化ブロックでのXMLコードの使用によるUIヒントの問合せ
初期化ブロックでSQL文のかわりに専用のXMLコードを使用して、1つのリポジトリおよびサブジェクト領域内で、UIヒントをデータ・ソースに問い合せることもできます。
「UIヒントのセッション変数ネーミング・スキームについて」を参照してください。
初期化ブロックを構成したら、該当するプレゼンテーション列について「カスタム表示名」および「カスタム説明」テキスト・フィールドにセッション変数名を手動で入力する必要があります。
分析の作成時のOracle ADFデータ・ソースのUIヒントの使用の手順に従います。ただし、最初のステップを次のステップに置き換えてください。
管理ツールでセッション初期化ブロックを作成します。セッション変数の作成を参照してください。
ADFQuery要素のリファレンス
ADFQuery要素とそのmode、databaseおよびlocale属性をXMLコードで使用します。
この要素には、ゼロ個以上の子要素が必要です。要素の構文を次に示します。
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <ADFQuery mode="mode" database="database_name" locale="VALUEOF(NQ_SESSION.WEBLANGUAGE)"> <ViewObject><![CDATA[view_object_name]]></ViewObject> <Attribute> <ViewObject><![CDATA[attribute_view_object_name]]></ViewObject> <Name><![CDATA[attribute_name]]></Name> </Attribute> </ADFQuery>
説明:
mode
は、問い合せる内容を指定します。
-
属性のラベルを問い合せる場合はlabel
-
属性のツールチップを問い合せる場合はtooltip
-
属性のラベルとツールチップを問い合せる場合はui_hints
database_name
は、Oracle ADFデータ・ソースの属性に対応する物理列が含まれている、管理ツールの物理データベース・オブジェクトの名前を指定します。
view_object_nameは、ビュー・オブジェクトの名前を指定して、その中のすべての属性のUIヒントを取得します。
attribute_view_object_nameは、属性が含まれているビュー・オブジェクトの名前を指定します。
attribute_nameは、関連付けられたビュー・オブジェクトに属する属性の名前を指定して、その属性のUIヒントを取得します。
すべてのビュー・オブジェクトのラベルの問合せ
すべてのビュー・オブジェクトのすべての属性のUIヒントを問い合せる場合、ADFQuery要素に子要素を含めないでください。たとえば、My_orclADF物理データベース・オブジェクト下のすべてのビュー・オブジェクトのすべての属性のラベルを問い合せるには、次のXMLコードを使用します。
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <ADFQuery mode="label" database="My_orclADF" locale="VALUEOF(NQ_SESSION.WEBLANGUAGE)"> </ADFQuery>
特定のビュー・オブジェクトのツールチップの問合せ
特定のビュー・オブジェクトのすべての属性のUIヒントを問い合せる場合、ViewObjectという子要素をゼロ個以上ADFQuery要素に含めることができます。各ViewObject要素に、ビュー・オブジェクトの名前を含むテキスト・コンテンツがあります。ViewObject要素は、すべての属性のUIヒントの問合せ元のビュー・オブジェクトを指定するために使用します。たとえば、My_orclADF物理データベース・オブジェクト下のEmployeesViewおよびCustomersViewというビュー・オブジェクトのすべての属性のツールチップを問い合せるには、次のXMLコードを使用します。
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <ADFQuery mode="tooltip" database="My_orclADF" locale="VALUEOF(NQ_SESSION.WEBLANGUAGE)"> <ViewObject><![CDATA[EmployeesView]]></ViewObject> <ViewObject><![CDATA[CustomersView]]></ViewObject> </ADFQuery>
特定の属性のUIヒントの問合せ
Attributeという子要素をゼロ個以上ADFQuery要素に含めることができます。各Attribute要素には、ViewObject
およびName
という2つの必須の子要素があります。Attribute要素は、UIヒントの問合せ元の属性を指定するために使用します。ViewObject
子要素には、ビュー・オブジェクトの名前を含むテキスト・コンテンツがあります。この要素は、属性が属するビュー・オブジェクトを指定します。Name
子要素には、属性の名前を含むテキスト・コンテンツがあります。たとえば、My_orclADF物理データベース・オブジェクト下のEmployeesViewビュー・オブジェクトのFirstnameおよびLastnameという属性のラベルとツールチップを問い合せるには、次のXMLコードを使用します。
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <ADFQuery mode="ui_hints" database="My_orclADF" locale="VALUEOF(NQ_SESSION.WEBLANGUAGE)"> <Attribute> <ViewObject><![CDATA[EmployeesView]]></ViewObject> <Name><![CDATA[Firstname]]></Name> </Attribute> <Attribute> <ViewObject><![CDATA[EmployeesView]]></ViewObject> <Name><![CDATA[Lastname]]></Name> </Attribute> </ADFQuery>